MFC 运行过程(摘录)
来源:互联网 发布:牛屎芯片编程器 编辑:程序博客网 时间:2024/06/05 17:41
MFC 运行过程(摘录)
程序的诞生
*Application object 产生,内存于是获得配置,初值亦设立了
*AfxWinMain 执行AfxWinInit,后者又调用AfxInitThread,把消息队列尽量加大到96
*AfxWinMain 执行InitApplication。这是CWinApp 的虚函数,但我们通常不改写它
*AfxWinMain 执行InitInstance。这是CWinApp 的虚函数,我们必须改写它
*CMyWinApp::InitInstance 'new' 了一个CMyFrameWnd 对象
*CMyFrameWnd 构造函数调用Create,产生主窗口。我们在Create参数中指定的窗口类是NULL,于是MFC 根据窗口种类,自行为我们注册一个名为"AfxFrameOrView42d" 的窗口类
*回到 InitInstance 中继续执行 ShowWindow,显示窗口
*执行 UpdateWindow,于是发出WM_PAINT
*回到AfxWinMain,执行Run, 进入消息循环
程序开始运行
*程序获得WM_PAINT消息(藉由CWinApp::Run中的::GetMessage循环)
*WM_PAINT经由::DispatchMessage 送到窗口函数CWnd::DefWindowProc中
*CWnd::DefWindowProc将消息传递过消息映射表格(Message Map)
*传递过程中发现有相符项目,于是调用项目中对应的函数.此函数时应用程序利用BEGIN_MESSAGE_MAP和END_MESSAGE_MAP
之间的宏设立起来的
*标准消息的处理程序亦有标准命名,例如WM_PAINT必然由OnPaint处理
程序的结束
*使用者单击 File/Close 发出WN_CLOSE
*CMyFrameWnd 并没有设置WM_CLOSE处理程序,于是交给默认的处理程序
*默认函数对于WN_CLOSE的处理方式是调用::DestroyWindow,并因而发出WM_DESTROY
*默认的WN_DESTROY处理方式是调用::PostQuitMessage,因此发出WM_QUIT
*CWinApp::Run收到WM_QUIT后会结束其内部之消息循环,然后调用ExitInstance,这是CWinApp的一个虚拟函数
*如果CMyWinApp改写了ExitInstance,那么CWinApp::Run所调用的就是CMyWinApp::ExitInstance,否则就是CWinApp::ExitInstance
*最后回到AfxWinMain,执行AfxWinTerm,结束程序
程序的诞生
*Application object 产生,内存于是获得配置,初值亦设立了
*AfxWinMain 执行AfxWinInit,后者又调用AfxInitThread,把消息队列尽量加大到96
*AfxWinMain 执行InitApplication。这是CWinApp 的虚函数,但我们通常不改写它
*AfxWinMain 执行InitInstance。这是CWinApp 的虚函数,我们必须改写它
*CMyWinApp::InitInstance 'new' 了一个CMyFrameWnd 对象
*CMyFrameWnd 构造函数调用Create,产生主窗口。我们在Create参数中指定的窗口类是NULL,于是MFC 根据窗口种类,自行为我们注册一个名为"AfxFrameOrView42d" 的窗口类
*回到 InitInstance 中继续执行 ShowWindow,显示窗口
*执行 UpdateWindow,于是发出WM_PAINT
*回到AfxWinMain,执行Run, 进入消息循环
程序开始运行
*程序获得WM_PAINT消息(藉由CWinApp::Run中的::GetMessage循环)
*WM_PAINT经由::DispatchMessage 送到窗口函数CWnd::DefWindowProc中
*CWnd::DefWindowProc将消息传递过消息映射表格(Message Map)
*传递过程中发现有相符项目,于是调用项目中对应的函数.此函数时应用程序利用BEGIN_MESSAGE_MAP和END_MESSAGE_MAP
之间的宏设立起来的
*标准消息的处理程序亦有标准命名,例如WM_PAINT必然由OnPaint处理
程序的结束
*使用者单击 File/Close 发出WN_CLOSE
*CMyFrameWnd 并没有设置WM_CLOSE处理程序,于是交给默认的处理程序
*默认函数对于WN_CLOSE的处理方式是调用::DestroyWindow,并因而发出WM_DESTROY
*默认的WN_DESTROY处理方式是调用::PostQuitMessage,因此发出WM_QUIT
*CWinApp::Run收到WM_QUIT后会结束其内部之消息循环,然后调用ExitInstance,这是CWinApp的一个虚拟函数
*如果CMyWinApp改写了ExitInstance,那么CWinApp::Run所调用的就是CMyWinApp::ExitInstance,否则就是CWinApp::ExitInstance
*最后回到AfxWinMain,执行AfxWinTerm,结束程序
- MFC 运行过程(摘录)
- MFC 运行过程(摘录)
- MFC 的运行过程
- MFC运行过程
- MFC 程序运行过程
- mfc程序运行过程
- mfc摘录
- MFC程序运行过程梳理
- MFC的运行过程分析
- MFC 单文档程序的运行过程
- 【c++】MFC运行过程函数解析
- MFC学习之程序运行过程梳理
- MFC程序的构造过程和运行机理初探
- MFC程序的构造过程和运行机理
- 【转】MFC程序的构造过程和运行机理
- MFC程序的构造过程和运行机理
- MFC中找到_tWinMain函数调试其运行过程
- MFC程序的运行过程和消息映射机制
- 在websphere上部署应用遇到的问题
- DirectShow 学习(五) CSource类和其一个具体实现例子的源代码分析(转载)
- Qzone中竟然不能使用“抵制”这个词
- 活动共享:写日志,免费参加精品系列课程
- 超高速互联网:几秒下载完《黑客帝国》
- MFC 运行过程(摘录)
- DirectShow 学习(六): CTransfromFilter及相关联Pin类的源代码解析(转载)
- MFC中闪烁的处理
- DirectShow 学习(七): CTransInPlaceFilter及相关联Pin类的源代码解析(转载)
- 声明:QQ408455730已被盗用,请同学们注意
- 硬盘的爱情故事
- 木马4天入侵10万电脑
- 定制LINUX发行版本
- DirectShow学习(八): CBaseRender类及相应Pin类的源代码分析(转载)