科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件应用MFC开发高级应用程序

应用MFC开发高级应用程序

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文就是针对如何在Visual C++环境中使用MFC类库来开发高级程序所需要解决的一些问题进行了的探讨

作者:苟建兵 来源:pcvc.net 2007年11月16日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
 六、使用自定义消息

  1、MFC的消息映射机制

  Windows是一个典型的消息驱动的操作系统,程序的运行是靠对各种消息的响应来实现的,这些消息的来源非常广泛,既包括Windows系统本身,如WM_CLOSE、WM_PAINT、WM_CREATE和WM_TIMER等常用消息,又包括用户菜单选择、键盘加速键以及工具条和对话框按钮等等,如果应用程序要与其它程序协同工作,那么消息的来源还包括其它应用程序发送的消息,串行口和并行口等硬件发送的消息等等。总之,Windows程序的开发是围绕着对众多消息的合理响应和实现来实现程序的各种功能的。使用过C语言来开发Windows程序的人都知道,在Windows程序的窗口回调函数中需要安排Switch语句来响应大量的消息,同时由于消息的间断性使得不同的消息响应之间信息的传递是通过大量的全局变量或者静态数据来实现的。

  人们常用的两种类库OWL和MFC都提供了消息映射机制用以加速开发速度,使用者只需要按规定定义好对应消息的处理函数自身即可,至于实际调用由类库本身所提供的机制进行,或采用虚函数,或采用消息映射宏。为了有效节约内存,MFC并不大量采用虚函数机制,而是采用宏来将特定的消息映射到派生类中的响应成员函数。这种机制不但适用于Windows自身的140条消息,而且适用于菜单命令消息和按钮控制消息。MFC提供的消息映射机制是非常强大的,它允许在类的各个层次上对消息进行控制,而不简单的局限于消息产生者本身。在应用程序接收到窗口命令时,MFC将按如下次序寻找相应的消息控制函数:

  SDI应用

  MDI应用

  视口

  视口

  文档

  文档

  SDI主框架

  MDI子框架

  应用

  MDI主框架

  应用

  大多数应用对每一个命令通常都只有一个特定的命令控制函数,而这个命令控制函数也只属于某一特定的类,但是如果在应用中对同一消息有多个命令控制函数,那么只有优先级较高的命令控制函数才会被调用。为了简化对常用命令的处理,MFC在基类中提供并实现了许多消息映射的入口,如打印命令,打印预览命令,退出命令以及联机帮助命令等,这样在派生类中就继承了所有的基类中的消息映射函数,从而可以大大简化编程。如果我们要在自己派生类中实现对消息的控制,那么必须在派生类中加上相应的控制函数和映射入口。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章