我有一个父对话框和一个子对话框。当我使用PostMessageW(WM_SMESG,NULL,l_dvalue)将消息从子节点发送到父节点时;其中l_Value是double值,但是当我在父节点接收此消息时,我就是typcasting就像double l_value =(double)lParam;然后l_value中的值总是显示0.0但是值isend到parent是0.5是什么问题
答案 0 :(得分:1)
将值0.5的两倍转换为整数将“向下舍入”;截断的小数更具体。从0.5截断.5的结果将始终为0.但是,lParam不足以保持双值(64位)(32位)。但是,假设float(32位)而不是double,您可以按如下方式执行:
*((long*)(&myFloat))
*((float*)(&lParam))
或C ++方式:
*reinterpret_cast<long*>(&myFloat)
*reinterpret_cast<float*>(&lParam)