2017.5.7学习笔记
来源:互联网 发布:cad标注尺寸数据不对 编辑:程序博客网 时间:2024/06/10 02:34
首先寻找程序的入口函数WinMain ,WinMain 函数在 APPMODUL.cpp 中,就是下面的_tWinMain,这是一个宏定义。
_tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow){ // call shared/exported WinMain return AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow);}
但在这里程序运行后,不是直接进入_tWinMain函数内,而是进入CTestApp类中的结构体CTestApp(),这是因为有一个全局对象 theApp。
CTestApp::CTestApp(){ // TODO: add construction code here, // Place all significant initialization in InitInstance}// The one and only CTestApp objectCTestApp theApp;// CTestApp initialization
这里要注意的是:
1.对于一个全局对象或一个全局变量,他们是在入口函数执行之前分配内存空间。作为全局对象来说就要调用构造函数为其分配内存空间。
2.theApp是一个序程对象(全局对象)
3.每一个MFC中有且仅有一个从CWinApp所派生出来的类(即CTestApp)。也只能有一个从应用程序类 所实例化的对象(即theApp),基类(父类)CWinApp是微软提供的,由此将两者联系起来了。
接下来程序才正式进去WinMain函数,也就是_tWinMain函数,我们注意到入口函数是通过AfxWinMain来表达的。下面介绍一下AfxWinMain。
以Afx-(application framework)为前缀的函数是 应用程序框架类函数。把类与类之间做了有机的集成,也都是全局函数,所以在每个类中都可以调用。AfxWinMain函数 在 WinMain.cpp 文件中。
int AFXAPI AfxWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow){ ASSERT(hPrevInstance == NULL); int nReturnCode = -1; CWinThread* pThread = AfxGetThread(); CWinApp* pApp = AfxGetApp(); // AFX internal initialization if (!AfxWinInit(hInstance, hPrevInstance, lpCmdLine, nCmdShow)) goto InitFailure; // App global initializations (rare) if (pApp != NULL && !pApp->InitApplication()) goto InitFailure; // Perform specific initializations if (!pThread->InitInstance()) { if (pThread->m_pMainWnd != NULL) { TRACE0("Warning: Destroying non-NULL m_pMainWnd\n"); pThread->m_pMainWnd->DestroyWindow(); } nReturnCode = pThread->ExitInstance(); goto InitFailure; } nReturnCode = pThread->Run();InitFailure:#ifdef _DEBUG // Check for missing AfxLockTempMap calls if (AfxGetModuleThreadState()->m_nTempMapLock != 0) { TRACE1("Warning: Temp map lock count non-zero (%ld).\n", AfxGetModuleThreadState()->m_nTempMapLock); } AfxLockTempMaps(); AfxUnlockTempMaps(-1);#endif AfxWinTerm(); return nReturnCode;}
0 0
- 2017.5.7学习笔记
- 2017.5.7学习笔记
- VC++7学习笔记
- JavaScript学习笔记7
- Java学习笔记7
- stl学习笔记7
- JavaScript学习笔记7
- Hibernate学习笔记7
- Python学习笔记(7)
- Spring学习笔记7
- android学习笔记7
- 学习笔记7
- C++ 学习笔记7
- JMS学习笔记7
- Android学习笔记7
- Java学习笔记7
- 机器学习-笔记7
- hibernate学习笔记7
- 工具集合
- mysql的top n查询
- 01 HTML
- Restful风格API接口开发springMVC篇
- css的定位问题
- 2017.5.7学习笔记
- android studio中使用android-gif-drawable开源项目实现gif图片的显示
- 【模拟】洛谷 P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers
- 蓝桥杯 算法训练 寻找数组中最大值 JAVA
- jmeter参数化随机取值实现
- centos 7配置静态IP,并配置DNS
- Windows的使用技巧(一)
- 教你如何使用php session
- 【模拟】洛谷 P1202 [USACO1.1]黑色星期五Friday the Thirteenth