• 注册
  • 关于作者
    企业认证:趣记站长
    关注 6 粉丝 4 喜欢 9 内容 992
    江西省·南昌市
    聊天 送礼
    • 查看作者
    • 分析与理解通知消息-WM_NOTIFY

      郑力群

        前言

        近来,有几个网友发妹儿问了我一些关于WM_NOTIFY通知消息的使用问题,为此,我写了这篇文章,将我对WM_NOTIFY消息的理解阐述如下,希望能对各位有所帮助。

        引入WM_NOTIFY消息的原因

        1、问题的提出:

        在Windows3.x中,不存在WM_NOTIFY消息,控制子窗口的通知消息同菜单的命令消息及加速键消息一样,均使用WM_COMMAND来发送,

      Win32程序函数调用时堆栈变化情况分析
      Windows的多线程程序设计初步,Windows应用程序设计的基本术语,句柄的本质,Windows完成端口编程,Windows任务管理器开发原理与实现,Windows 2000下Api函数的拦截分析,Win32开发中最易踏上的地雷,windows系统文件详解,Window 消息大全使用详解,利用HOOK拦截封包原理,消息钩子函数入门篇,用Win32 API实现串行通信,Windows编程中的映射模式和坐标转换,Win32程序函数调用时堆栈变化情况分析,分析与理解通知消息-WM_NOTIFY,Windows函数错误处理,WINDOWS数据类型,注册ActiveX控件的几种方法,托盘编程,串行通信与重叠I/O
      WINDOWS编程

      此时,根据WM_COMMAND消息传递的做法,可知道含有如下的传递结构:

      wParam high-order : Notify Code :(如TTN_NEEDTEXT)

      wParam low-order : ControlID

      lParam : ControlHandle

        使用上述结构进行消息的传递时,如果一个通知消息有一些附加的消息需要发送时(如传递LVN_COLUMNCLICK时可能需要附加传送如点击的是那一列等信息),因为WM_COMMAND仅能传递如上的参数,故无法做到。

        2、解决的方案

        --Windows 3.x中的解决方案,为这些有附加消息传送要求的通知消息,为它们各自定义了许多特殊的消息。

        以WM_DRAWITEM为例:

        lParam参数成为指向DRAWITEMSTRUCT结构的指针,DRAWITEMSTRUCT结构如下:

      typedef struct tagDRAWITEMSTRUCT {

      UINT CtlType;

      UINT CtlID;

      UINT itemID;

      UINT itemAction;

      UINT itemState;

      HWND hwndItem;

      HDC hDC;

      RECT rcItem;

      ULONG_PTR itemData;

      } DRAWITEMSTRUCT;

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

      Win32程序函数调用时堆栈变化情况分析
      Windows的多线程程序设计初步,Windows应用程序设计的基本术语,句柄的本质,Windows完成端口编程,Windows任务管理器开发原理与实现,Windows 2000下Api函数的拦截分析,Win32开发中最易踏上的地雷,windows系统文件详解,Window 消息大全使用详解,利用HOOK拦截封包原理,消息钩子函数入门篇,用Win32 API实现串行通信,Windows编程中的映射模式和坐标转换,Win32程序函数调用时堆栈变化情况分析,分析与理解通知消息-WM_NOTIFY,Windows函数错误处理,WINDOWS数据类型,注册ActiveX控件的几种方法,托盘编程,串行通信与重叠I/O
      WINDOWS编程

    • 0
    • 0
    • 0
    • 72
    • 单栏布局 侧栏位置: