} } }

    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并不必然雷同。

    我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》
    分享到: