AFX_MODULE_STATE* pModuleState //当前程序模块状态信息
AFX_MODULE_THREAD_STATE* pThreadState //获取当前程序线程状态信息
CWinApp::CWinApp(LPCTSTR lpszAppName){ //构造全局对象 CMyWinApp theApp
AFX_MODULE_STATE* pModuleState = AfxGetModuleState(); //获取当前程序模块状态信息
AFX_MODULE_THREAD_STATE* pThreadState = pModuleState->m_thread; //获取当前程序线程状态信息
pThreadState->m_pCurrentWinThread = this; //this = CMyWinApp theApp
ASSERT(AfxGetThread() == this);
AfxGetThread(){ //AfxGetThread()获取theApp的地址
AFX_MODULE_THREAD_STATE* pThreadState = AfxGetModuleThreadState();
AfxGetModuleThreadState(){
AFX_MODULE_THREAD_STATE* pThreadState = pModuleState->m_thread.GetData();
return pThreadState;
}
CWinThread* pThread = this;
return &theApp;
}
m_hThread = ::GetCurrentThread(); //获取线程句柄
m_nThreadID = ::GetCurrentThreadId(); //获取线程ID
pModuleState->m_pCurrentWinApp = this; //将theApp保存到模块状态信息中
ASSERT(AfxGetApp() == this);
AfxGetApp(){
return AfxGetModuleState()->m_pCurrentWinApp; //AfxGetApp()获取theApp的地址
}
}
A002 MFC从零开始【分析CMyWinApp构造函数】
最新推荐文章于 2024-07-25 23:22:43 发布