• 分析与理解通知消息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 续

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

    点击这里给我发消息
  • 相关阅读:
    uni-app中使用Echarts绘画图表
    css设置Overflow实现隐藏滚动条的同时又可以滚动
    JS判断在哪一端浏览器打开
    ElementUI分页Pagination自动到第一页
    第203场周赛
    TreeSet使用
    155 最小栈
    234 回文链表
    141 环形链表
    2 两数相加
  • 原文地址:https://www.cnblogs.com/charm/p/1814995.html
Copyright © 2020-2023  润新知