MFC程序初始化过程仿真(参考了侯俊杰的《深入浅出MFC》)
下面的Windows Console程序是 MFC程序初始化过程的仿真,如下:
#include <iostream>
using namespace std;// MFC类
class CObject{};class CCmdTarget : public CObject{};class CWinThread : public CCmdTarget
{
public:virtual void InitInstance() {cout << "CWinThread::InitInstance \n";}virtual void Run() // 8{cout << "CWinThread::Run \n";}
};class CWnd;
class CWinApp : public CWinThread
{
public:CWinApp* m_pCurrentWinApp;CWnd* m_pMainWnd;public:CWinApp::CWinApp() {m_pCurrentWinApp = this;}virtual void InitApplication() // 第1个被调用{cout << "CWinApp::InitApplication \n";}virtual void InitInstance() {cout << "CWinApp::InitInstance \n";}virtual void Run() // 7{cout << "CWinApp::Run \n";CWinThread::Run();}
};class CWnd : public CCmdTarget
{
public:virtual void Create(){cout << "CWnd::Create \n";}void CreateEx(){cout << "CWnd::CreateEx \n"; // 5PreCreateWindow();}virtual void PreCreateWindow() // 非6{cout << "CWnd::PreCreateWindow \n";}
};class CFrameWnd : public CWnd
{
public:void Create() // 4{cout << "CFrameWnd::Create \n";CreateEx();}virtual void PreCreateWindow() // 6{cout << "CFrameWnd::PreCreateWindow \n";}
};class CMyFrameWnd : public CFrameWnd
{
public:CMyFrameWnd::CMyFrameWnd() // 3{cout << "CMyFrameWnd::CMyFrameWnd \n";Create();}
};class CMyWinApp : public CWinApp
{
public:virtual void InitInstance() // 2 {cout << "CMyWinApp::InitInstance \n";m_pMainWnd = new CMyFrameWnd; // 没考虑内存释放}
};CMyWinApp theApp; // 全局对象CWinApp* AfxGetApp() // 全局函数
{return theApp.m_pCurrentWinApp;
}int main()
{CWinApp* pApp = AfxGetApp();pApp->InitApplication();// CWinApp::InitApplicationpApp->InitInstance();// CMyWinApp::InitInstance// CMyFrameWnd::CMyFrameWnd// CFrameWnd::Create// CWnd::CreateEx// CFrameWnd::PreCreateWindow (千万注意这个)pApp->Run();// CWinApp::Run// CWinThread::Runreturn 0;
}
MFC程序初始化过程仿真(参考了侯俊杰的《深入浅出MFC》)相关推荐
- MFC程序需要的函数库及头文件--《深入浅出MFC》
Windows程序调用的函数可分为2部分:C Runtimes + Windows API. C Runtimes: LIBC.LIB -- C Runtime函数库的静态链接版本 MSVSRT.LI ...
- MFC程序执行过程剖析
一 MFC程序执行过程剖析 1)我们知道在WIN32API程序当中,程序的入口为WinMain函数,在这个函数当中我们完成注册窗口类,创建窗口,进入消息循环,最后由操作系统根据发送到程序窗口的消息调用 ...
- MFC类层次结构仿真(参考了侯俊杰的《深入浅出MFC》)
说明:1. 在本文中,我们在析构函数中用printf代替cout, 至于具体原因,之前的博文已经讲过,这里不再赘述. 2. 仿真是在Windows Console上进行的. 在仿真MFC类层次结构之前 ...
- 14、基于51单片机1602电流表检测设计(程序+原理图+Proteus仿真+参考论文+开题报告+任务书+元器件清单等)
摘要 随着微电子技术的迅速发展和超大规模集成电路的出现,特别是单片机的出现,正引起测量.控制仪表领域新的技术革命.采用单片机作为测量仪器的主控制器,这种以单片机为主体的新型智能仪表将计算机与测量控制技 ...
- 63、基于51单片机数字频率计NE555数码管显示系统设计(程序+原理图+Proteus仿真+参考论文+开题报告+任务书+元器件清单等)
摘 要 近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此越来越广泛地应用各个领域. ...
- 读侯俊杰的《深入浅出MFC》小记
1.程序必须在产生窗口之前先利用API函数RegisterClass设定属性(我们称此操作为注册窗口类) 2.消息循环中的TranslateMessage是为了将键盘消息转化,DispatchMess ...
- MFC 程序来龙去脉
MFC 程序来龙去脉 --寻找与Win32 App的关联 声明 本文由张杰原创,参考了侯俊杰先生的<深入浅出MFC>,源码摘自 Microsoft Visual Studio 9.0\VC ...
- 六、MFC 程序的生死因果 (学习笔记)
MFC程序的生死因果 项目HELLO 理想如果不向实际做点妥协,理想就会归于尘土. 中华民国还得十次革命才得建立,对象导向怎能把一切传统都抛开. 以传统的C/SDK 撰写Windows 程序,最大的好 ...
- MFC程序解析以及使用cl.exe、link.exe编译连接Windows API和MFC程序
目录 一.实验目的 二.实验配置 三.MFC程序创建和解析 (一).创建MFC程序 (二).分析MFC程序 四.使用cl.exe和link.exe (一).Windows API 1.实验代码 2.实 ...
最新文章
- 5、MySQL事务隔离级别详解
- 2021年新高考八省联考成绩查询福建,2021福建八省联考成绩查询时间
- JS 如何快速高效的将数组转换成树形结构
- wps多人协作后怎么保存_蜂蜜开封后能放多久?蜂蜜开封后怎么保存?蜂蜜存放要注意事项...
- 人工智能会让工作环境变得更公平,还是更压抑?
- (31)System Verilog类class详解
- Android 自定义ViewGroup
- layui中接收modelView中返回的对象并赋值给容器
- 纯手工打造漂亮的垂直时间轴,使用最简单的HTML+CSS+JQUERY完成100个版本更新记录的华丽转身!...
- Emacs:报错:File error: Cannot open load file,cl-lib解决
- redis hscan用法
- HEALTH_WARN 1 filesystem is degraded,一直在rejoin状态
- 如何使用Microsoft PowerPoint制作海报
- ASP.NET MVC 音乐商店 - 8. 使用 Ajax 更新的购物车
- ERP软件定制开发需注意哪些问题?ERP定制开发要多长时间?
- 光学实验-偏振光的研究(matploylib)
- CSRF和SSRF详解
- centos、linux离线搭建yum源,iso文件制作yum源,nginx搭建yum源
- 亚洲金融危机会否重来 人民日报(海外版) 2007年6月11日
- performSelector多个参数