windows通用消息
通用消息标志都定义在WINUSER.H中,以WM_开头,大概分为三类
1 窗口消息
如:VM_CREATE(窗口创建),VM_CLOSE(窗口关闭)
2 命令消息
特指:VM_COMMAND消息,与处理用户请求有关,如点击工具栏等
3 通知消息
特指VM_NOTIFY消息,只使用Windows的公用控件,如列表,视图等等
Windows控件消息
控件消息是用来控制一些行为的,不同的控件有不同的消息控制
BM_按钮控制消息
EM_编辑框控件消息
STM_静态文本控制消息
CM_组合框控制消息
LBM_列表框控制消息
用户自定义消息
除了Windows消息外,也可以自己定义消息,系统的消息在0~WM_USER之间,自己定义的消息大于WM_USER就好
消息的发生
PostMessage、SendMessage
PostMessage会将消息发送到消息队列,然后操作系统会把消息又发送到应用程序的消息队列里面,然后应用程序再获取消息再调用回调函数处理消息
SendMessage相当于直接调用窗口的回调函数。
回调函数-消息处理函数
LRESULT CALLBACK WindowProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
这个函数是用来处理消息的,里面的值第一个是表示对应的窗口的句柄,第二个是消息的结构体,第三个和第四个是消息的附加结构体,每个消息类型的第三个和第四个参数都不一样。
定义自己的消息
参考消息处理函数的参数来生成对应的变量, HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
意味着需要传这四个,第一个表示是句柄不用,第二个第三个第四个需要自己建立。这里我只用uMsg消息编号不要后面的
const UINT WM_MYMSG = WM_USER + 1;