下面的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》)相关推荐

  1. MFC程序需要的函数库及头文件--《深入浅出MFC》

    Windows程序调用的函数可分为2部分:C Runtimes + Windows API. C Runtimes: LIBC.LIB -- C Runtime函数库的静态链接版本 MSVSRT.LI ...

  2. MFC程序执行过程剖析

    一 MFC程序执行过程剖析 1)我们知道在WIN32API程序当中,程序的入口为WinMain函数,在这个函数当中我们完成注册窗口类,创建窗口,进入消息循环,最后由操作系统根据发送到程序窗口的消息调用 ...

  3. MFC类层次结构仿真(参考了侯俊杰的《深入浅出MFC》)

    说明:1. 在本文中,我们在析构函数中用printf代替cout, 至于具体原因,之前的博文已经讲过,这里不再赘述. 2. 仿真是在Windows Console上进行的. 在仿真MFC类层次结构之前 ...

  4. 14、基于51单片机1602电流表检测设计(程序+原理图+Proteus仿真+参考论文+开题报告+任务书+元器件清单等)

    摘要 随着微电子技术的迅速发展和超大规模集成电路的出现,特别是单片机的出现,正引起测量.控制仪表领域新的技术革命.采用单片机作为测量仪器的主控制器,这种以单片机为主体的新型智能仪表将计算机与测量控制技 ...

  5. 63、基于51单片机数字频率计NE555数码管显示系统设计(程序+原理图+Proteus仿真+参考论文+开题报告+任务书+元器件清单等)

    摘  要 近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此越来越广泛地应用各个领域. ...

  6. 读侯俊杰的《深入浅出MFC》小记

    1.程序必须在产生窗口之前先利用API函数RegisterClass设定属性(我们称此操作为注册窗口类) 2.消息循环中的TranslateMessage是为了将键盘消息转化,DispatchMess ...

  7. MFC 程序来龙去脉

    MFC 程序来龙去脉 --寻找与Win32 App的关联 声明 本文由张杰原创,参考了侯俊杰先生的<深入浅出MFC>,源码摘自 Microsoft Visual Studio 9.0\VC ...

  8. 六、MFC 程序的生死因果 (学习笔记)

    MFC程序的生死因果 项目HELLO 理想如果不向实际做点妥协,理想就会归于尘土. 中华民国还得十次革命才得建立,对象导向怎能把一切传统都抛开. 以传统的C/SDK 撰写Windows 程序,最大的好 ...

  9. MFC程序解析以及使用cl.exe、link.exe编译连接Windows API和MFC程序

    目录 一.实验目的 二.实验配置 三.MFC程序创建和解析 (一).创建MFC程序 (二).分析MFC程序 四.使用cl.exe和link.exe (一).Windows API 1.实验代码 2.实 ...

最新文章

  1. 5、MySQL事务隔离级别详解
  2. 2021年新高考八省联考成绩查询福建,2021福建八省联考成绩查询时间
  3. JS 如何快速高效的将数组转换成树形结构
  4. wps多人协作后怎么保存_蜂蜜开封后能放多久?蜂蜜开封后怎么保存?蜂蜜存放要注意事项...
  5. 人工智能会让工作环境变得更公平,还是更压抑?
  6. (31)System Verilog类class详解
  7. Android 自定义ViewGroup
  8. layui中接收modelView中返回的对象并赋值给容器
  9. 纯手工打造漂亮的垂直时间轴,使用最简单的HTML+CSS+JQUERY完成100个版本更新记录的华丽转身!...
  10. Emacs:报错:File error: Cannot open load file,cl-lib解决
  11. redis hscan用法
  12. HEALTH_WARN 1 filesystem is degraded,一直在rejoin状态
  13. 如何使用Microsoft PowerPoint制作海报
  14. ASP.NET MVC 音乐商店 - 8. 使用 Ajax 更新的购物车
  15. ERP软件定制开发需注意哪些问题?ERP定制开发要多长时间?
  16. 光学实验-偏振光的研究(matploylib)
  17. CSRF和SSRF详解
  18. centos、linux离线搭建yum源,iso文件制作yum源,nginx搭建yum源
  19. 亚洲金融危机会否重来 人民日报(海外版) 2007年6月11日
  20. performSelector多个参数

热门文章

  1. JAVA入门算法题(十)
  2. JAVA I/0 流学习(一)
  3. 如何用sql语句创建表
  4. ssd测试软件4k 64线程是什么意思,4K随机/缓存等性能测试_固态硬盘评测-中关村在线...
  5. 佳能营销发表电子辞典「佳能 wordtank M600」
  6. 2012 不宜进入的三个技术点(上)
  7. JSP转换Servlet
  8. 数据结构————带头结点单链表讲解
  9. Vue2源码解析 虚拟节点VNode
  10. DevExpress换肤