MFC学习笔记01消息处理.docxVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
模态对话框和非模态对话框单线程,程序运行时,若运行了模态对话框,则线程会进入等待状态(运行模态对话框时会使线程进入一个while循环),直到模态对话框结束,在运行模态对话框期间,程序不能运行其他的对话框,运行非模态对话框时则可以。单文档菜单消息的有哪些信誉好的足球投注网站流程是:视图类-文档类-文档模板类-框架窗口类-应用程序类。如果找不到,则将相应的界面元素变灰。1 消息的分类MFC 在Win32 的消息结构MSG 的基础上将消息分为三类:窗口消息、命令消息和控件消息。消息的区别在于:消息类别标识和消息的附加参数不同。消息映射:ON_COMMAND();(命令消息)ON_MESSAGE()(自定义消息);ON_WM_...(预定义消息);1.1 窗口消息1.1.1 基础知识相关操作:与窗口相关的操作,例如,创建窗口、绘制窗口、移动窗口、改变窗口尺寸、鼠标在窗口区域内的各种操作等。凡是从基类CWnd派生的类都能够处理这类消息。形式:WM_XXX,其中WM为窗口消息类型前缀,XXX表示具体的窗口消息种类。1.1.2 窗口消息产生途径①窗口之间交互产生;②系统产生的窗口消息;③程序根据需要发送窗口消息。1.2 命令消息1.2.1 基础知识相关操作:处理用户的某个请求或者执行用户的某个命令。凡是从基类CCmdTarget 派生的类都能够处理这类消息。形式:WM_COMMAND主要字段:message(消息类别)WM_COMMANDwParam(附加参数)低16位为命令ID、高16位为0。lParam(附加参数)0L由于wParam 的高、低16位表示不同的含义,需要分解。wParam来判断命令消息,也需要组装一个wParam用于生成命令消息。系统提供的宏可以帮助完成这些工作。1.2.2 参数分解HIGHWORD(wParam);获取高16位,为0表示M_COMMAND类别的消息为命令消息。LOWWORD(wParam);获取低16位,为命令的资源ID。例如:菜单命令消息中:菜单项的资源ID;工具栏按钮消息中:工具栏按钮对应的资源ID;加速键消息中:加速键对应的资源ID。1.2.3 参数组合使用宏MAKEWPARAM,例如:生成一条打开文件的命令消息,打开文件的菜单项的资源ID为ID_FILE_OPEN,消息命令为:(WM_COMMAND, MAKEWPARAM(ID_FILE_OPEN, 0), 0L)1.2.4 命令消息产生途径①选择菜单项;②单击工具栏按钮;③按加速键;④程序根据需要发送的命令消息。1.3 控件消息1.3.1 相关操作此类消息与控件窗口中的某个事件相关,例如:文本框控件窗口内的内容发生改变、列表框控件中某个选项被选择、按钮控件被单击、滑杆条的游标被移动等,都会发出相应的控件事件消息。1.3.2 形式由于控件是近年来软件开发中最为活跃的,控件的种类不断增加,随之控件消息的类别也迅速增加,原来的控件消息格式越来越不能满足控件消息的描述,因此,必须寻求新的控件消息描述方法。由于历史的原因,控件消息的新旧描述形式必须并存才能兼容所有的控件消息。1.3.3 控件消息产生途径①由控件的各类事件发出;②程序根据需要模拟控件事件发送通知消息。2 自定义消息2.1 自定义消息的步骤①添加自定义消息,例如:#defineWM_MESSAGENAME(WM_USER+100)(Microsoft推荐用户自定义消息至少是WM_USER+100,因为很多新控件也要使用WM_USER消息)②在.H头文件中,添加消息响应函数,该函数有规定的格式:LONGFunction_Name(WPARAMw,LPARAMl);对于添加的自定义消息WM_MESSAGENAME的函数处理形式如下:LONGOnMessageName(WPARAMw,LPARAMl);③添加消息响应宏在响应该消息的类的消息响应块中,加入以下语句。ON_MESSAGE(WM_MYMESSAGE,OnMyMessage)④在.cpp源文件中,添加消息响应函数体。其代码如下:LONGCMyClass::OnMessageName(WPARA w,LPARAM l){}(类向导ClassWizard不允许增加用户自定义消息,所以开发人员必须手工添加。添加后,类向导ClassWizard就可以像处理其他消息一样处理自定义消息了。)如果用户需要整个系统唯一的消息,则可以调用SDK函数RegisterWindowMessage()并使用ON_REGISTER_MESSAGE宏指令取代ON_MESSAGE宏指令,其余步骤同上。⑤给窗口发送消息SendMessage(WM_MESSAGENAME,0L,0L);2.2 SendMessage和PostMessageSendMessage传递消息后,需要等到消息被处理完

您可能关注的文档

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档