postmessage如何传递浮点型跟整型
解决方案 »
- 关于CSerialPort的问题,求高手
- 我创建的日历控件不能在MainFrm中响应?
- 【求助】访问需要用户名密码的http站点时,有时会返回401错误,或者用户名密码是正确的,怎样编代码检验?
- 加入新类为什么出错
- 紧急,紧急,用vc如何实现*.raw格式文件的读取
- 我在一个FormView中,添加了一个树形控件,想通过调用函数,更新数据?
- 如何查找内存泄漏?
- 如何在VC++中调用标准C的源代码!!!!!!!!!!
- 如何得到其他程序的标题和某一控件的句柄?
- 大哥哥,大姐姐们,帮帮我这个菜鸟吧!(之二)
- Visual Studio 命令工具(2010)无法编译源码
- 如何编写MYSQL数据库重连?
PostMessageA(
__in_opt HWND hWnd,
__in UINT Msg,
__in WPARAM wParam,
__in LPARAM lParam);
利用 wParam, lParam传啊~
float b = 2;
postmessage(HWND,WM_XXX,(WPARAM)a, (LPARAM)b);
static double dbVal;
dbVal = XXXXX;
PostMessage(hwnd, wPram, (LPARAM)&dbVal)
先说float的格式IEEE754标准
float是32位数据,比如你有个浮点数变量为f
然后你把它拆成4个字节的独立信息,这个要用union联合来拆
typedef union
{
float x;
char y[5]
}F32;F32 f32;
然后你把你的浮点数f赋值给F32联合类的变量
f32 = f;
下一步要把你的字节拆到整形里
int i;
i = (f32.s[0] << 24) | (f32.s[1] << 16) | (f32.s[2] << 8) | (f32.s[3]);
这里面暂不讨论cpu是大端还是小端,但是你到接收这个消息的对侧函数里要按照同样的办法把他还原成float
比如你这里把i用wParam发过来了
f32 f;
f = wParam;
float recv = f.x;
如果这个数不对,你就把给i赋值那段的0到3下标反过来标
我就想有么有办法直接传,因为是给客户发消息,现在是权值处理,乘过10,得到数据再除10。
必须这么转的,因为float是内部类型,而且你的WPARAM只能传整形