AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > VC编程

分析与理解通知消息-WM_NOTIFY

51自学网 2015-08-30 http://www.wanshiok.com

前言

  近来,有几个网友发妹儿问了我一些关于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中随处可见。

<

 

 

 
说明
:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
上一篇:visual&nbsp;c++对大型数据文件的读取  下一篇:在VC下显示JPEG、GIF格式图像的一种简便方法