MFC程序的运行过程和消息映射机制

原创 2016年08月30日 16:56:21
最近需要做一些图像识别和分类的小例程,在老师的建议下学习Opencv+MFC平台。之前一直在做单片机方面,因为有main函数的显式存在,觉得对程序的控制度很好,一切都有迹可循,但是在接触MFC之后觉得程序执行的相比之前不够明朗。在看到孙鑫的《VC++深入详解》之后觉得有所帮助,现写下一个小结,希望能帮助初学者。

在测试程序执行过程的时候可以通过打断点来查看程序是否经过这个函数。下面写下MFC程序的执行过程的小结。

首先,利用全局应用程序对象theApp启动应用程序。

然后,调用全局应用程序对象的构造函数完成初始化。

此后,进入WinMain函数。主要完成注册窗口类,创建窗口,显示窗口,更新窗口。

最后,进入消息循环。


下面简述一下单文档(SDI)工程函数的调用顺序。

1)CSdiApp theApp;          //sdi.cpp
2)CSdiApp::CSdiApp()             //sdi.cpp
3)BOOL CSdiApp::InitInstance()         //sdi.cpp
4)CSdiDoc::CSdiDoc()                   //sdiDoc.cpp
5)CMainFrame::CMainFrame()          //MainFrm.cpp
6)BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)    //MainFrm.cpp
7)int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)    //MainFrm.cpp
8)CSdiView::CSdiView()                     //sdiView.cpp
9)BOOL CSdiView::PreCreateWindow(CREATESTRUCT& cs)         //sdiView.cpp
10)BOOL CSdiDoc::OnNewDocument()                //sdiDoc.cpp
11) void CSdiView::OnDraw(CDC* pDC)                //sdiView.cpp
// ---------------- 关闭窗口后-------------------------------------
12) CSdiView::~CSdiView()
13) CMainFrame::~CMainFrame()
14) CSdiDoc::~CSdiDoc() 

MFC的消息映射机制:在能接受和处理消息的类中如CXXXView和CXXXDlg中,存在一个消息和消息函数的静态对照表。当有消息到来时,程序只需查看消息静态表,看其中是否有该消息,如果有就处理。




【VC编程】笔记2--SDK编程的模板程序/MFC消息映射机制的本质解析

/***************************************************************************************************...

[原创]MFC消息映射机制

MFC程序是靠消息映射驱动的,当用户执行鼠标/键盘、移动窗口等操作时,windows系统基于这些动作生成消息并存入系统消息队列。MFC程序执行消息循环,取出属于自己的消息并执行这些消息。MFC处理消息...

MFC中消息映射机制分析

  • 2011年08月03日 15:40
  • 47KB
  • 下载

MFC消息映射机制以及画线功能实现

 ---此仅供用于学习交流,切勿用于商业用途,转载请注明。 利用VS2010创建一个单文档标准MFC工程,工程名为Draw,运行如图所示: 下面主要用来讲解函数和变量添加方法,以此弄明白...
  • cmdos
  • cmdos
  • 2016年12月23日 01:08
  • 152

MFC消息映射机制的剖析

  • 2012年10月23日 22:37
  • 24.26MB
  • 下载

MFC消息映射和处理机制整理

Windows应用程序是消息驱动的。在MFC软件开发中,界面操作或者线程之间通信都会经常用到消息,通过对消息的处理实现相应的操作。比较典型的过程是,用户操作窗口,然后有消息产生,送给窗口的消息处理函数...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC程序的运行过程和消息映射机制
举报原因:
原因补充:

(最多只允许输入30个字)