MFC应用程序的基本运行的内在机制
1. 应用程序的进入点WinMain函数
DOS----程序的进入点是main函数
Windows---程序的进入点是WinMain函数
----函数WinMain的主要包括三个功能
1)注册窗口类,建立窗口以及完成其他的初始化工作
2)创建消息循环,根据消息类型调用相应的处理函数
3)检索到退出消息时关闭窗口,终止程序运行
流程:
A. 函数WinMain会查找该应用程序的一个全局对象(CWinApp的派生类对象)
B. 函数WinMain调用应用程序对象得InitInstance成员函数,完成应用程序的初始化工作
C. 函数WinMain调用Run成员函数,运行应用程序的消息循环
D. 函数WinMain调用ExitInstance函数,退出应用程序
2. 消息循环
Windows将发生的消息放入应用程序的消息队列中,函数WinMain通过消息循环从消息队列中提取消息,并将其传递给窗口函数的相应处理过程
1)检索消息:PeekMessage(&m_msgCur, NULL, NULL, NULL, PM_NOREMOVE)
2)翻译消息: TranslateMessage(&m_msgCur)
3) 分发消息: DipatchMessage(&m_msgCur)
WindowProc主要完成对分发来的消息的处理工作,当然用户可以自定义新的消息以及消息响应函数
3. 退出程序
当用户选择退出,MFC会发送标准命令消息ID_APP_EXIT,将激活消息处理函数CWinApp::OnAppExit()
在这里将发送WM_CLOSE消息给窗口,窗口将处理这个消息,完成关闭窗口
WM_CLOSE响应函数是CWnd::OnClose(),将销毁窗口。DestroyWindow函数就是用来销毁窗口,并发送WM_DESTROY,WM_NCESTROY消息给该窗口及其各级子窗口
WM_DESTROY响应函数是CWnd及其派生类的成员函数OnDestroy()
在MFC中OnNcDestroy是Windows窗口被销毁的时调用的最后一个成员函数
最后由函数AfxPostQuitMessage发出WM_QUIT消息,通过退出消息循环,进而退出整个应用程序
阅读(1466) | 评论(0) | 转发(0) |