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

最近需要做一些图像识别和分类的小例程,在老师的建议下学习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中,存在一个消息和消息函数的静态对照表。当有消息到来时,程序只需查看消息静态表,看其中是否有该消息,如果有就处理。




阅读更多
个人分类: c++
上一篇Oral Speech
下一篇用matlab制作自动处理文件夹内文件的程序
想对作者说点什么? 我来说一句

MFC消息映射流程图

2016年04月30日 172KB 下载

剖析MFC六大关键技术

2011年04月12日 35KB 下载

MFC基本运行原理简介

2011年12月15日 126KB 下载

没有更多推荐了,返回首页

关闭
关闭