AFX_MODULE_STATE* pModuleState
AFX_MODULE_THREAD_STATE* pThreadState
CWinApp::CWinApp(LPCTSTR lpszAppName){
AFX_MODULE_STATE* pModuleState = AfxGetModuleState();
AFX_MODULE_THREAD_STATE* pThreadState = pModuleState->m_thread;
pThreadState->m_pCurrentWinThread = this;
ASSERT(AfxGetThread() == this);
AfxGetThread(){
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();
pModuleState->m_pCurrentWinApp = this;
ASSERT(AfxGetApp() == this);
AfxGetApp(){
return AfxGetModuleState()->m_pCurrentWinApp;
}
}