MFC仿真程序里的一个有关问题,大家慷慨的帮帮小弟我

MFC仿真程序里的一个问题,大家慷慨的帮帮我
我看的是侯俊杰的深入浅出MFC,
仿真程序里设计到调用InitApplication()和InitInstance()这两个虚函数
前面类的声明里有一个如下:
 class CWinApp:public CWinThread
{
public:
CWinApp *m_pCurrentWinApp;
CWnd *m_pMainWnd;
……
}
主函数如下:
CWinApp * pApp=AfxGetApp();
pApp->InitApplication();
pApp->InitInstance();
pApp->Run();
我的问题是,主函数里调用的三个函数都是类CWinApp的成员函数,而且该类里也有公共指针,
干嘛不直接写成pApp=m_pCurrentWinApp呢,或者不用定义指针,直接调用,例如m_pCurrentWinApp->InitApplication()
干嘛还用函数AfxGetApp()来返回m_pCurrentWinApp指针呢,不是多此一举吗?没什么分,望大家海涵哈呵呵



------解决方案--------------------
WinMain入口函数调用AfxWinMain函数,AfxWinMain是个全局函数,不是某个类的成员函数。

C/C++ code
int AFXAPI AfxWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    _In_ LPTSTR lpCmdLine, int nCmdShow)
{
    ASSERT(hPrevInstance == NULL);

    int nReturnCode = -1;
    CWinThread* pThread = AfxGetThread();
    CWinApp* pApp = AfxGetApp();

    // AFX internal initialization
    if (!AfxWinInit(hInstance, hPrevInstance, lpCmdLine, nCmdShow))
        goto InitFailure;

    // App global initializations (rare)
    if (pApp != NULL && !pApp->InitApplication())
        goto InitFailure;

    // Perform specific initializations
    if (!pThread->InitInstance())
    {
        if (pThread->m_pMainWnd != NULL)
        {
            TRACE(traceAppMsg, 0, "Warning: Destroying non-NULL m_pMainWnd\n");
            pThread->m_pMainWnd->DestroyWindow();
        }
        nReturnCode = pThread->ExitInstance();
        goto InitFailure;
    }
    nReturnCode = pThread->Run();

InitFailure:
#ifdef _DEBUG
    // Check for missing AfxLockTempMap calls
    if (AfxGetModuleThreadState()->m_nTempMapLock != 0)
    {
        TRACE(traceAppMsg, 0, "Warning: Temp map lock count non-zero (%ld).\n",
            AfxGetModuleThreadState()->m_nTempMapLock);
    }
    AfxLockTempMaps();
    AfxUnlockTempMaps(-1);
#endif

    AfxWinTerm();
    return nReturnCode;
}