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