对于WM_USER宏 ,小于这个值的ID被系统使用,大于这个值的ID被用户使用
在头文件定义如
#define WM_MYMSG WM_USER+5
然后就要映射一个函数方法到这个消息,这样才有意义嘛
ON_MESSAGE(MY_MSG , onMyMsgFunc)
这个方法的声明:
afxmsg LRESULT onMyMsgFunc(WParam wParam , LPARAM lParam);
//注意在VC6.0中,可以定义为afx void onMyMsgFun().这样在VC6.0下是可以编译通过的,可是在VS2008中就不可以,一定要定为
//上面那样的格式
然后就是发送消息,有PostMessage与SendMessage,当然还有几个发送的,不过一般多见这2个。
PostMessage直接把消息放入消息队列,而不等待是否被处理就直接返回,而SendMessage要等到返回才进行下面的代码执行
这2个函数的后两个参数是根据消息类型的不同而用的,如WM_SETTEXT,他的第一个参数是为0的,第二个参数指定文本
如:SendMessage(FindWindow(NULL , _TEXT("计算器")) , WM_SETTEXT , 0 ,_TEXT("更改后的名字"));
对于菜单的消息映射也和上面的类似:
ON_COMMAND(菜单的IDC , 映射的函数)
然后在申明消息映射函数:
afxmsg void onFunc();
然后对这个消息映射函数进行定义就可以了。