MFC 运行过程(摘录)
来源:互联网 发布:淘宝短款旗袍 编辑:程序博客网 时间:2024/05/18 00:13
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,结束程序
- MFC 运行过程(摘录)
- MFC 运行过程(摘录)
- MFC 的运行过程
- MFC运行过程
- MFC 程序运行过程
- mfc程序运行过程
- mfc摘录
- MFC程序运行过程梳理
- MFC的运行过程分析
- MFC 单文档程序的运行过程
- 【c++】MFC运行过程函数解析
- MFC学习之程序运行过程梳理
- MFC程序的构造过程和运行机理初探
- MFC程序的构造过程和运行机理
- 【转】MFC程序的构造过程和运行机理
- MFC程序的构造过程和运行机理
- MFC中找到_tWinMain函数调试其运行过程
- MFC程序的运行过程和消息映射机制
- 走进Zend Framework框架编程
- 十月 午后 小感
- Geographic coordinate system和projected coordinate system 地理坐标系统和投影坐标系统
- 我自己的故事
- 企业级邮件服务器Apache James介绍(2)-用matchers 和 mailets构
- MFC 运行过程(摘录)
- java 调用存储过程【转】
- 解决:No configuration found. Configuring ehcache from ehcache-failsafe.xml 问题
- [转载] ColdFusionMX 下 Mach-II 和 Fusebox 的比较
- 交换式路由器与路由式交换机
- 适配器模式之理解
- 走进Zend Framework框架编程(二):软件安装和环境配置
- 模板列前台绑定
- 走进Zend Framework框架编程(三):运行第一个程序