WM_COMMAND
wNotifyCode = HIWORD(wParam); // notification code 通知码
wID = LOWORD(wParam); // item, control, or accelerator identifier 菜单项,控件或加速键
hwndCtl = (HWND) lParam; // handle of control 控件句柄
WM_SYSCOMMAND
A window receives this message when the user chooses a command from the window menu (also known as the System menu or Control menu) or when the user chooses the Maximize button or Minimize button.
WM_SYSCOMMAND
uCmdType = wParam; // type of system command requested 系统请求命令的类型
xPos = LOWORD(lParam); // horizontal postion, in screen coordinates 在屏幕坐标的水平位置
yPos = HIWORD(lParam); // vertical postion, in screen coordinates 垂直位置
WM_MESSAGE、WM_COMMAND、WM_NOTIFY等消息有什么不同?
这就是这几种消息的差别点了。
控件的自画:
首先在创建控件的时候当然就是指定BS_OWNERDRAW的STYLE,这个STYLE是告诉控件,别自己处理外观,让主程序来处理你的外观,这时你就有权决定这个控件是画成什么样子了。然后就是处理WM_DRAWITEM的消息,利用 LPDRAWITEMSTRUCT pdis = (LPDRAWITEMSTRUCT) lParam; 来取得一些必要的信息,如按钮的DC,位置等。这才能对这个DC的内容进行绘画啊。COMMON CTRL的STYLE都在COMMCTRL.H头文件里。
按了一次(BN_CLICKED),取得焦点(BN_SETFOCUS),失去焦点(BN_KILLFOCUS)等。
这个是按钮的发送WM_COMMAND的条件,其他的控件什么时候会发送WM_COMMAND消息可查看该控件的通知码(在wParam的高位HIWORD)。例如,滚动条控件在被滚动的时候会向它的父窗体发送消息,但是不是WM_COMMAND消息,而是WM_VSCROLL和WM_HSCROLL消息。这只是为了说明凡是子控件,都会在适当的条件下向它的父窗体发送消息。无论是WM_COMMAND还是WM_NOTIFY或是WM_VSCROLL消息等。