<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      區分與理解通知消息-WM_NOTIFY

      [摘要]鄭力群  前言  近來,有幾個網友發妹兒問了我一些關于WM_NOTIFY通知消息的使用問題,為此,我寫了這篇文章,將我對WM_NOTIFY消息的理解闡述如下,希望能對各位有所幫助! ∫隬M_NO...
      鄭力群

        前言

        近來,有幾個網友發妹兒問了我一些關于WM_NOTIFY通知消息的使用問題,為此,我寫了這篇文章,將我對WM_NOTIFY消息的理解闡述如下,希望能對各位有所幫助。

        引入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時可能需要附加傳送如點擊的是那一列等信息),因為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中隨處可見。 


      日韩精品一区二区三区高清