MFC里AfxGetThread()与AfxGetAPP()的区别

 1 CWinThread* AFXAPI AfxGetThread()

 2 {

 3     // check for current thread in module thread state

 4     AFX_MODULE_THREAD_STATE* pState = AfxGetModuleThreadState();

 5     CWinThread* pThread = pState->m_pCurrentWinThread;

 6 

 7     // if no CWinThread for the module, then use the global app

 8     if (pThread == NULL)

 9         pThread = AfxGetApp();

10 

11     return pThread;

12 }
1 _AFXWIN_INLINE CWinApp* AFXAPI AfxGetApp()

2 {

3 return afxCurrentWinapp;

4 }

5 //在AFXWIN.H中 #define afxCurrentWinApp AfxGetModuleState()->m_pCurrentWinApp

6 //AfxGetModuleState()就是得到当前模块,AfxGetModuleState()->m_pCurrentWinApp=this;得到当前应用程序的对象指针

AfxGetThread()返回的是当前界面线程对象的指针,AfxGetApp()返回的是应用程序对象theApp的指针.

如果该应用程序(或进程)只有一个界面线程在运行,那么这两者返回的都是一个全局的应用程序对象theApp的指针。

如果在多线程时调用AfxGetThread返回的与AfxGetApp并不一定相同。

你可能感兴趣的:(thread)