MFC第二天——基类2及程序初始化

时间:2022-06-22 22:23:45
MFC这些核心基类中实现的功能都是精华啊~,多琢磨

1 CWinThread
  封装了对线程的相关操作,关于线程会在以后文章中详细说明。
  常用:
  m_pMainWnd 保存指向应用程序的主窗口的指针
  虚函数InitInstance——创建实例,应用程序重载这个虚函数,进行系统设置,创建运行环境(如主窗口)
  虚函数Run——提供UI线程的消息循环,接收、分发消息,但Run很少被重载
  虚函数ExitInstance——退出消息循环时执行,做最后的清理工作,可以重载为线程做相关的清理工作
2 CWinApp
  CWinApp对象是一个应用程序实例,该类提供了初始化和运行应用程序实例的相关成员函数
  每个MFC应用程序只能包含一个app实例,这个app实例是全局的,它和其他C++全局变量一起产生,且在WinMain函数执行之前。
  对于自己特定的应用程序,你需要重载InitInstance函数
  MFC提供了以下全局函数,用于访问你的app实例和其他全局信息:
  --AfxGetApp 获得指向CWinApp对象的指针。  
  --AfxGetInstanceHandle 获得当前应用程序实例的句柄。  
  --AfxGetResourceHandle 获得应用程序资源的句柄。  

  --AfxGetAppName 获得一个字符串指针,其中包含了应用程序的名字。


关于MFC程序的初始化过程

——>(理解一)

SDI程序CMyApp

   1 定义全局对象theApp   (会调用父类CWinApp的构造函数)

    2 进入WinMain (AfxGetApp获取子类指针pApp)

    3 pApp->InitApplication(); (调用父类CWinApp::InitApplication)

    4 pApp->InitInstance(); 

       (调用子类CMyApp::InitInstance----->引发CMyFrameWnd::CMyFrameWnd----->

        引发CFrameWnd::Create-----> 引发CWnd::CreateEx----->引发CFrameWnd::PreCreateWindow)

    5 m_pMainWnd->ShowWindow();   // 显示窗口

    6 m_pMainWnd->UpdateWindow();  //更新窗口

    7pApp->Run();   //开始消息处理

推荐文章:

MFC程序生死  http://www.moon-soft.com/doc/6474.htm  简述的啊~

MFC程序的来龙去脉  http://hi.baidu.com/quanhaili/blog/item/221459323635c74bac4b5f39.html