分析与理解通知消息-WM_NOTIFY

1、问题的提出:

在Windows3.x中,不存在WM_NOTIFY消息,控制子窗口的通知消息同菜单的命令消息及加速键消息一样,均使用WM_COMMAND来发送,此时,根据WM_COMMAND消息传递的做法,可知道含有如下的传递结构:

wParam high-order : Notify Code :(如TTN_NEEDTEXT)
wParam low-order : ControlID
lParam : ControlHandle

使用上述结构进行消息的传递时,如果一个通知消息有一些附加的消息需要发送时(如传递LVN_COLUMNCLICK时可能需要附加传送如点击的是那一列等信息),又或者需要获取鼠标双击的list control 的某一具体ITEM时,因为WM_COMMAND仅能传递如上的参数,故无法做到。

2、解决办法

      通过把lParam指向某些特定结构体以附加更多的信息。

       以获取双击list control列表的某一具体项为例:

       假如wParam 的ControlID 为list control 的ID时候,lParam指向结构体:

typedef struct tagNMLISTVIEW {

    NMHDR hdr;

    int iItem;

    int iSubItem;

    UINT uNewState;

    UINT uOldState;

    UINT uChanged;

    POINT ptAction;

    LPARAM lParam;

} NMLISTVIEW, *LPNMLISTVIEW;

这样,就实现了附加参数的传递,类似的做法在Windows3.x中随处可见。

更多内容请看我的新博客  分析与理解通知消息-WM_NOTIFY 续

请大家原谅我的宣传方式吧,一直喜欢自己有个个人博客,但个人博客坏处就是少人能交流问题,欢迎大家加我好友什么的,谢谢。

你可能感兴趣的:(notify)