Windows API学习-MSG结构体和窗口过程详解(2)
- 简 介
- 下 载
- 留 言
- 说 明
WndProc 窗口过程

窗口过程一般定义为如下的形式:
LRESULT CALLBACK WndProc( HWND hwnd, //窗口句柄 UINT message, //消息类型 WPARAM wParam, //附加消息1 LPARAM lParam //附加消息2 ){ // TODO }
WndProc 的各个参数和 MSG 结构体的前四个字段是一一对应的。需要铭记的是:每产生一条消息,都会调用一次 WndProc 函数。
当用户点击按钮、编辑框、下拉列表框等控件的时候,会产生WM_COMMAND消息。对于不同来源的 WM_COMMAND 消息,wParam、lParam 参数也不同,见下表:
消息来源 wParam (高16位) wParam (低16位) lParam 菜单 0 菜单ID 0 快捷键 1 快捷键ID 0 控件 控件通知码 控件ID 控件句柄
注意:
上面说的菜单是指窗口标题下方、客户区上方的下拉菜单,而不是客户区的下拉列表框控件。
控件通知码用来识别控件的操作。例如 Button 控件一般有两种通知码,BN_CLICKED 和 BN_DOUBLECLICKED,前者表示 Button 被单击,后者表示 Button 被双击。
对于 Button 控件,我们可以通过LOWORD(wParam)来获取它的 ID,这就是上节最后一个例子的原理,请参考上节的代码体会。