关于MFC Control 控件编程
来源:互联网 发布:淘宝店运营模式 编辑:程序博客网 时间:2024/05/20 23:04
刚开始的时候难免会遇到缺乏资料,不过还好,只要有耐心MSDN还是不会让我们太失望的~~
对于所有Control的最新介绍可以从下面的连接中找到:http://msdn.microsoft.com/en-us/library/47xcww9x.aspx。例如,CTreeCtrl/CToolBarCtrl等等
另外对于控件的消息和我们常见的WM_*不一样,控件采用的是NM_*,Notify通告消息,至于采用通告消息的原因和实现的方式可以参看:http://msdn.microsoft.com/en-us/library/749htf6k.aspx。对于控件的消息映射有详细说明。
简单提一下,对于控件消息处理的方法,或许以后对我们会有什么启发。
在Windows 3.x里面如果控件发生单击、内容改变、控件背景重绘等事件,就会通过向父窗口发送消息来通知父窗口采取相应动作。一些简单的通知是按照特殊的WM_COMMAND消息来发送的,并且消息参数wParam里面含有控件ID,lParam含有控件处理函数的地址。需要注意的是,因为wParam/lParam已经被使用了,所以就没有办法把其他一些数据(比如鼠标单击是的位置)也传送给父窗口了。
为了把其他的一些信息也能够传递给父窗口,mfc那些维护者就添加了很多专门的针对各种控件的消息,比如:WM_CTLCOLOR, WM_VSCROLL, WM_HSCROLL, WM_DRAWITEM, WM_MEASUREITEM, WM_COMPAREITEM, WM_DELETEITEM, WM_CHARTOITEM, WM_VKEYTOITEM等等。
在Win32里面,随着MFC不断的发展,有更复杂而又精致的控件被添加进来,这也就意味着有更多的数据需要传递。此时,是应该好好想想应该怎样来对待这些控件了?难道还是继续添加专门的WM_*?如果这样做的话会不会让MFC变得越来越让人讨厌,毕竟没有人刻意喜欢复杂的东西~所以,那些mfc维护者就重新提出了一个解决方案:所有的控件消息用一个WM_消息来代表,就像WM_COMMAND一样,这样的话MFC会看起来更精美,结构也会变得很清晰,所以这个消息就是WM_NOTIFY。并且他们采用NMHDR这个结构来存储控件消息。
typedef struct tagNMHDR { HWND hwndFrom; UINT idFrom; UINT code;} NMHDR;
这样每一个控件消息在定义的时候都会包含NMHDR成员,比如,列表视图控件的LVN_KEYDOWN控件通告消息的定义如下:
typedef struct tagLV_KEYDOWN { NMHDR hdr; //第一个成员是NMHDR类型 WORD wVKey; UINT flags; } LV_KEYDOWN;然后通过下面这两句代码来实现完整的一个控件消息的映射:
ON_NOTIFY( wNotifyCode, id, memberFxn )
afx_msg void memberFxn( NMHDR * pNotifyStruct, LRESULT * result );
- 关于MFC Control 控件编程
- MFC控件编程:Tab Control
- C++ MFC Control 控件编程
- MFC编程->可编辑List Control控件
- MFC编程->可编辑List Control控件
- MFC编程--tab control控件的使用
- MFC控件Edit Control
- MFC控件--Edit Control
- MFC List Control控件
- MFC--Tree Control 控件
- MFC(VS2010)编程实例之一(Edit Control控件)
- MFC编程入门(常用控件:编辑框Edit Control)
- 一,关于MFC里面的EDIT Control控件的用法
- 关于MFC里list control控件的重叠问题
- MFC Tree Control控件使用
- MFC对话框控件---Edit Control
- MFC Tree Control控件使用
- MFC控件小记-Progress Control
- perl脚本学习
- deb包 打包过程
- JSP预定义变量的使用
- oracle中decode函数的使用
- Windows Azure AppFabric Caching入门简介
- 关于MFC Control 控件编程
- PHP 可变函数
- VC 怎样调用COM控件的接口函数
- PHP的strtotime()函数转换的时间如何转换成ASP.NET识别的,或者反过来
- 多IP的服务器,让IIS只监听指定的IP
- win32 GDI学习 画线条和画框
- bash_history
- 玩转ipad之二
- 参加工作一年零两个月的ASP.NET女程的纠结