2010-10-28 34 views
0

我有一個父對話框和一個子對話框,當我使用PostMessageW(WM_SMESG,NULL,l_dvalue)將子消息發送給父代時;其中l_Value是雙精度值,但當我收到父母的消息,然後我像雙l_value =(雙)lParam typcasting;然後在l_value值總是顯示0.0,但價值isend父母是0.5什麼是問題爲什麼PostMessageW lparam值在後面的場景中顯示錯誤的值

回答

1

施放價值0.5整數將被「舍入」;小數被截斷爲更具體。從0.5截斷0.5的結果將始終爲0.但是,lParam不夠大(32位)以保存雙精度值(64位)。

  • 位爲基礎的「中投」從浮長:從長期*((long*)(&myFloat))
  • 基於位的「中投」漂浮但是,假設浮動(32位),而不是雙,你可以按如下做:*((float*)(&lParam))

或者C++的方式:

  • 位爲基礎的 「中投」 從浮長:*reinterpret_cast<long*>(&myFloat)
  • 基於比特的「投」從長到長:*reinterpret_cast<float*>(&lParam)
相關問題