MFC里AfxGetThread()与AfxGetAPP()的差别
添加时间:2013-5-25 点击量:
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并不必然雷同。
我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》
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并不必然雷同。
我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》