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