控件通知消息,是指这样一种消息,一个窗口内的控件发生了一些事情,需要通知父窗口。当用户与控件窗口交互时,控件通知消息就会从控件窗口发送到它的主窗口,这种消息一般不是为了处理用户命令,而是为了让主窗口能够改变控件。WM_COMMAND和WM_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_NOTIFY和WM_COMMAND相比,是一种更灵活的消息格式,lParam中放的是一个称为NMHDR结构的指针。在wParam中放的则是控件的ID。最初Windows 3.x就有的控件,如Edit,Combo,List,Button等,发送的控件通知消息的格式是WM_COMMAND;而后期的Win32通用控件,如List View,Image List,IP Address,Tree View,Toolbar等,发送的都是WM_NOTIFY控件通知消息。
举例:WM_NOTIFY消息:对CTabCtrl控件进行处理
举例:WM_COMMAND消息,IDC_COMBO1