转自:http://blog.csdn.net/eddy_liu/article/details/8474677

目前,用MFC设计的Windows应用程序几乎都采用文档/视图结构。这种程序框架与简单程序框架之间的重要区别就在于形成应用程序的主窗口不只需要一个类的对象,而是需要3个对象:

  • 框架窗口类(CFrameWnd)对象
  • 视图类(CView)对象
  • 文档类(CDocument)对象

框架窗口类(CFrameWnd)对象作为窗口的框架,视图类(CView)的对象作为贴附在框架窗口上的用户区,二者共同形成了应用程序的界面;而文档类对象CDocument对象则在幕后专门对数据进行存储和管理。在应用程序类CWinApp中,使用文档模板把3个类的对象组装在一起,从而形成一个完整的程序实体。在文档/视图结构的应用程序中,对于消息响应的添加和管理是至关重要的,这里我们通过一个简单的例子介绍在MFC中如何添加消息响应函数。

  • 首先,我们建立一个简单的文档/视图结构的应用程序esayApp(在应用向导中基本遵从默认即可),如图所示:
  • 在菜单的资源编辑器中添加“testMessage”选项,如下图所示:
在添加的选项上右键,然后点击属性,注意其ID(当添加新选项是,系统会默认生成一个ID),在这里我们为了强调,将默认ID改为”ID_TESTMESSAGE“。然后打开Resource.h文件,在其中会发现系统自动为新添加项增加了序号,如下图所示:(如果没有需要自己手动添加)
  • 现在,我们在视图类中添加该菜单的消息映射和消息响应函数。
  • 在simpleAppView.cpp中添加新的消息映射:
  • 在simpleAppView.h中添加消息响应函数的声明:
  • 最后在simpleAppView.cpp中添加消息响应函数是实现:
至此,具有消息响应功能的视图/文档结构的MFC应用程序就设计完成了,单击“文件-->testMessage”效果如下:
总结下消息响应函数添加的过程:
  1. 设置事件触发的ID,并在Resource.h中指定具体值(有些版本会自动生成)。
  2. 在xxxView.cpp中添加新的消息映射:ON_COMMAND( , )。
  3. 在xxxView.h中添加消息响应函数的声明:afx_msg void fun_xxx()
  4. 在xxxView.cpp中添加新的消息响应函数的具体实现:void fun_xxx()

MFC中添加消息响应函数的更多相关文章

  1. vs2015 MFC工程添加消息响应函数

    真不知道这PPT怎么描述的..最后窝找到了解决方法如上图.. 下次找MSDN解决问题好了..而且我们并不知道他所说的这个IDE到底是哪个厂商哪个版本的IDE这就很困惑 不过呢..它主要是让我们添加消息 ...

  2. VC中添加消息响应函数

    1. 添加消息映射 2. 头文件中添加函数声明 3. 实现文件中添加函数定义

  3. VS2010 MFC中 给菜单项添加消息响应函数

    久了没用,居然忘记了该怎样给菜单项添加响应函数了~~~~~~~~T_T 特记于此: 1. 在资源视图的Menu里找到自己要添加的菜单,然后输入菜单项. 2. 右击菜单项选属性,设置Popup为Fals ...

  4. MFC中添加OpenGL

    WINDOWS下展示OpenGL有多种形式: MFC 或 win32,该如何向MFC中添加OpenGL?下面是介绍最简单OpenGL框架. 1.首先通过VS建立MFC应用程序-MyOpenGL,选择单 ...

  5. MFC中添加ToolTip提示框

    PART 1 MFC 对话框中的 Buttton添加提示 例如我们想在一个对话框中的一个button控件添加tooltip,实现的方法如下: 1. 在该对话框的类中添加一个CToolTipCtrl类型 ...

  6. 在MFC中添加OpenGL窗口

    虽然MFC已经落伍好多年,而且用来做界面非常的不好用...但是我既不会C#也不会QT,又需要使用OpenGL,就只能将就用了...   一.首先介绍Windows图像程序设计中几个重要的概念:   G ...

  7. MFC中添加了一个dialog,并创建了相应的类,初始化函数没有怎么办?

    1.在头文件中添加  virtual BOOL OnInitDialog();2.在对于的CPP文件中添加  BOOL CXXDlg::OnInitDialog()  {      return TR ...

  8. MFC中添加新的对话框

    MFC工程中,除了系统自动生成的一些对话框之外,还需要根据自己的需求,添加新的对话框.这里总结下自己最近使用的方法. 首先,找到Resource View中自己新建的工程,然后右键,选择Add Cla ...

  9. 在MFC中添加用户自定义消息

    1.定义一个宏 (用户自定义消息从WM_USER开始) #define WM_XXXXX WM_USER+数值 2.声明一个函数并实现 afx_msg LRESULT OnXXXXX( WPARAM ...

随机推荐

  1. PL/0编译器(java version)–PL0.java

    1: package compiler; 2:   3: import java.io.BufferedWriter; 4: import java.io.FileWriter; 5:   6: /* ...

  2. VMware 11安装Mac OS X 10.11.5虚拟机以及优化心得

    随着苹果WWC大会退出了MAC最新版的10.11.5,本着一颗“极客”的心情,在第一时间用VMWARE虚拟机装上了.然后各种卡顿这里分享一下优化mac虚拟机的心得. 1 从Dock上移除Dashboa ...

  3. Andriod Dialog 加载框 自定义,公用

    怎门样,看图吧,我感觉还不错,很好,在让美工给你陪陪色,就完美了 代码呢放csnd 一份,收1分,百度网盘一份免费.我csdn 没分了,资助我下,谢谢了. http://download.csdn.n ...

  4. java对象存储管理

    java程序在内存中的存储分配情况: 堆区: 1.存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的目的是得到操作指令) 2.jvm只有一个堆区(heap)被所有线程共享, ...

  5. 机器人与机器人仿真技术(zz)

    http://www.viblue.com/archives/5587.htm 一.机器人简介: 机器人(Robot)是自动执行工作的机器装置.它既可以接受人类指挥,又可以运行预先编排的程序,也可以根 ...

  6. php + mysql 分布式事务(转)

    事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元: 事务应该具有4个属性:原子性.一致性.隔离性.持续性 原子性(atomicity).一个事务是一个不可分割的工作单 ...

  7. NoClassDefFoundError: org/slf4j/LoggerFactory解决

    缺少slf4j-api-1.5.2,slf4j-log4j12-1.5.2,log4j-1.2.8这几个包,导入即可

  8. [Socket网络编程]由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。

    原文地址:http://blog.sina.com.cn/s/blog_70bf579801017ylu.html,记录在此方便查看 解决办法: MSDN的说明: Close 方法可关闭远程主机连接, ...

  9. ICMP Internet控制报文协议

    ICMP是(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制消息.控制消息是指网 ...

  10. URAL 1932 The Secret of Identifier 题解

    http://acm.timus.ru/problem.aspx?space=1&num=1932 B - The Secret of Identifier Time Limit:1000MS ...