mfc消息映射与处理.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
mfc消息映射与处理

MFC消息映射与处理 责任编辑:admin 更新日期:2005-8-6 介绍 大家好!我是小辉,不知前两篇文章你看了感觉怎样?在前两篇文章里 我们主要了解了Widows程序和MFC程序的基本框架。我希望大家记住它。 今天我们主要了解一下MFC程序的消息映射 正文 【1】Windows处理消息的方法: 在第0篇中见到的 while(GetMessage(msg,NULL,0,0)) { TranslateMessage(msg); DispatchMessage(msg); } 【2】MFC处理消息的方法: 在第1篇见到的 class CMyFrameWnd : public CFrameWnd { public: afx_msg void OnPaint() //重绘窗口内部的图形 { CPaintDC paintDC(this); paintDC.TextOut(10,10,小辉愿和大家一起进步!); } DECLARE_MESSAGE_MAP()//声明消息映射表 }; //消息映射表 BEGIN_MESSAGE_MAP(CMyFrameWnd,CFrameWnd) ON_WM_PAINT()//响应WM_PAINT消息 END_MESSAGE_MAP() 【3】消息响应函数[afx_msg void OnPaint();]:即处理消息的函数。 afx_msg只是将函数标记为消息响应函数,你把它去掉程序也可以正常 运行,只不过是习惯的标记罢了! 【4】当MFC程序要处理消息时,你要告诉MFC你要处理什么消息以及在 什么位置出处理这些消息。为此我们声名了一个消息映射表 DECLARE_MESSAGE_MAP()//声明消息映射表 并填写了消息映射表 //(填写)消息映射表 BEGIN_MESSAGE_MAP(CMyFrameWnd,CFrameWnd) ON_WM_PAINT()//响应WM_PAINT消息 END_MESSAGE_MAP() 还好,我们使用AppWizard和ClassWizard创建应用程序时,他们哥俩帮 我们做好了上面的事情(*AppWizard为我们创建了基本消息映射表, ClassWizard会根据需要给给消息映射表添加新的条目*): (A)在类的头文件中说明了消息映射表(DECLARE_MESSAGE_MAP())。 (B)在类的头文件中说明了消息响应函数函数(afx_msg void OnPaint();)。 (C)在类的实现文件中定义了消息映射表 BEGIN_MESSAGE_MAP(CMyFrameWnd,CFrameWnd) ON_WM_PAINT()//响应WM_PAINT消息 END_MESSAGE_MAP() 消息映射表的作用是:通过它找到消息响应函数。 (D)在类的实现文件中定义了消息响应函数。 void CMFrameWnd::OnPaint() //重绘窗口内部的图形 { CPaintDC paintDC(this); paintDC.TextOut(10,10,小辉愿和大家一起进步!); } 这些工作你也可以手动完成(如第1篇看到的,只不过在那一篇中我们把这些 东西都放在了MyApp.cpp文件中,应该把声名放在.h文件中,把实现放在 .CPP文件中,VC中就是这样管理每一个类的)! 【5】MFC程序中消息的种类: (A)窗口消息(Window Message): 这种消息一般与窗口的内部运作有关,如创建窗口、绘制窗口和销毁窗口等。 通常,消息是从系统发送到窗口,或从窗口发送到窗口。形式通常为WW_XXX (不包括WW_COMMAND)如: WM_CREATE,告诉窗口初始化自己。 WM_PAINT,告诉窗口绘制自己。 WM_MOUSEMOVE,告诉窗口鼠标移经它。 (B)由控件和其它子窗口发送给父窗口的WW_COMMAND消息: 这些消息中包括EN_CHANGE通知码,例如当用户在编辑框中键如文本或进行修改时, 就会向系统发送一个带EN_CHANGE通知码的WM_COMMAND消息。 (C)来自用户界面对象的WW_COMMAND消息: 包括由菜单、工具栏按钮和快捷键这些用户界面对象发送的消息。 【6】说了这么多是不是有些乱?我们需要记住的是消息发生时,通过消息映射表 找到相应的消息响应函数对消息进行处理!记住这三个宏: DECLARE_MESSAGE_MAP()//声明消息映射表 //消息映射表 BEGIN_MESSAGE_MAP(CMyFrameWnd,CFrameWnd) END_MESSAGE_MAP()

文档评论(0)

75986597 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档