3.MFC的运行流程
来源:互联网 发布:淘宝特卖入口 编辑:程序博客网 时间:2024/06/06 00:52
我们来了解一下MFC程序创建的流程, 一下代码在控制台程序中,模拟MFC的运行流程,每一个流程的内容是在控制台输出一些语句。
程序运行的结果如下:
类图结构:
上图便是 MFC 程序 的运行流程
MFC.h
#pragma once#include<iostream>using namespace std;class CObject{public:};class CCmdTarget : public CObject{public:};class CWinThread : public CCmdTarget{public:virtual bool InitInstance(){cout << "CWinThread:InitInstance \n";return true;}virtual int Run(){cout << "CWinThread:Run \n";return 1;}};//先声音 CWnd类 因为在 CWinApp中需要用到,但是却没有 实际定义 CWnd这个类class CWnd;class CWinApp : public CWinThread{public:CWinApp* m_pCurrentWinApp;CWnd* m_pMainWnd;public:CWinApp::CWinApp(){m_pCurrentWinApp = this;}virtual bool InitInstance(){cout << "CWinApp:InitInstance \n";return true;}virtual int Run(){cout << "CWinApp:Run \n";return CWinThread::Run();}virtual bool InitApplication(){cout << "CWinApp:InitApplication \n";return true;}};class CDocument : public CCmdTarget{public:};class CWnd : public CCmdTarget{public:virtual bool Create();bool CreateEx();virtual bool PreCreateWindow();};class CView : public CWnd{public:};class CFrameWnd : public CWnd{public:bool Create();virtual bool PreCreateWindow();};CWinApp* AfxGetApp();
MFC.cpp
#include "my.h"extern CMyWinAPP theApp;CWinApp* AfxGetApp(){return theApp.m_pCurrentWinApp;}bool CWnd::Create(){cout << "CWnd::Create \n";return true;}bool CWnd::CreateEx(){cout << "CWnd::CreateEx \n";//PreCreateWindow 是虚函数,所以调用哪个类的PreCreateWindow是根据 传入的指针来确定的PreCreateWindow();return true;}bool CWnd::PreCreateWindow(){cout << "CWnd::PreCreateWindow \n";return true;}bool CFrameWnd::Create(){cout << "CFrameWnd::Create \n";//由于CFrameWnd 并没有重写 CreateEx 所以 调用父类的 CreateEx函数CreateEx();return true;}bool CFrameWnd::PreCreateWindow(){cout << "CFrameWnd::PreCreateWindow \n";return true;}
my.h
#include<iostream>#include"MFC.h"class CMyWinAPP :public CWinApp{public:bool InitInstance();};class MyFrameWnd:public CFrameWnd{public:MyFrameWnd::MyFrameWnd(){ cout << "MyFrameWnd::MyFrameWnd \n";//MyFrameWnd 并没有重写Create 所以 调用了 父类的Create函数Create();}};
my.cpp
#include"my.h"CMyWinAPP theApp;bool CMyWinAPP::InitInstance(){//让父类也初始化CWinApp::InitInstance();cout << "CMyWinAPP::InitInstance \n";m_pMainWnd = new MyFrameWnd();return true;}void main(){CWinApp *pApp = AfxGetApp();//初始化运行环境等工作pApp->InitApplication();//对给个类对象进行初始化工作pApp->InitInstance();//程序开始运行pApp->Run();system("pause");}
0 0
- 3.MFC的运行流程
- 手写简单的MFC框架,分析MFC的运行流程
- MFC 运行流程
- MFC应用程序运行流程
- mfc,示例 ctrlbars 程序运行流程分析
- MFC Paint的流程
- MFC的运行步骤
- MFC的运行顺序
- MFC 的运行过程
- MFC的运行步骤
- MFC的运行步骤
- MFC的运行顺序
- WebWork的运行流程
- java的运行流程
- JVM运行的流程
- zencart的运行流程
- Struts2的运行流程
- sruts2的运行流程
- spring事务的配置使用
- i2c总线
- socket编程总结(端口使用/bind/select/iocp等)----windows环境下
- 一个普通人
- Contains Duplicate III 重复数 堆实现
- 3.MFC的运行流程
- Redis学习心得
- std::string实现原理1
- 关于截屏截取不到透明窗口的问题
- sctp AIX
- 刚刚在看52单片机和GPS通信程序的时候,看到了一个函数,absacc.h,貌似从来没有遇到过,百度了一下,结合自己的理解,整理如下: http://blog.sina.com.cn/s/blog_4
- 5.3.1 Unique Binary Sear Trees
- Google Developing for Android系列文章翻译
- eclipse创建Maven web项目