WM_COMMAND和WM_NOTIFY比较

来源:互联网 发布:手机淘宝怎么接收文件 编辑:程序博客网 时间:2024/05/17 06:40

      控件通知消息,是指这样一种消息,一个窗口内的控件发生了一些事情,需要通知父窗口。当用户与控件窗口交互时,控件通知消息就会从控件窗口发送到它的主窗口,这种消息一般不是为了处理用户命令,而是为了让主窗口能够改变控件。WM_COMMANDWM_NOTIFY都是控件通知消息。

     在Win32中,引进了NMHDR结构。这个结构的引进把消息统一起来,利用它可以传递各种复杂的消息。

    SendMessage(WM_NOTIFY, (WPARAM)控件ID, LPARAM&(NMHDR结构))
NMHDR结构内容如下:
NMHDR
{


HWND hWndFrom;//相当于原WM_COMMAND消息的lParam


UINT idFrom; //相当于原WM_COMMAND消息的wParam(LOWORD)


UINT code; //相当于原WM_COMMAND消息的wParam(HIWORD)通知码

 

}

 

   SendMessage(WM_COMMAND,(WPARAM)控件ID,(LPARAM)消息类型)

 

      WM_NOTIFYWM_COMMAND相比,是一种更灵活的消息格式,lParam中放的是一个称为NMHDR结构的指针。在wParam中放的则是控件的ID。最初Windows 3.x就有的控件,如EditComboListButton等,发送的控件通知消息的格式是WM_COMMAND;而后期的Win32通用控件,如List ViewImage ListIP AddressTree ViewToolbar等,发送的都是WM_NOTIFY控件通知消息。

举例:WM_NOTIFY消息:对CTabCtrl控件进行处理

      

举例:WM_COMMAND消息,IDC_COMBO1