Программирование на языке MFC

Мой второй блог в серии программирования

Функция AfxGetApp


Фактически внутри этой функции и производятся все действия, необходимые для того, чтобы программа пользователя смогла нор­мально отработать. Из того, что может нас в настоящий момент заинтересовать, заинтересовать, здесь присутствует только одна деталь. Для нас важно, что в процессе при помощи функции AfxGetApp() выбирается указатель на объект класса CWinApp, по­сле чего вызывается функция, производящая инициализацию AFX (application frameworks), – AfxWinlnit().

Ее исходный код находится в файле appinit.cpp:

BOOL AFXAPI AfxWinlnit(HINSTANCE hlnstance,

HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)

{

ASSERT(hPrevInstance == NULL);

// handle critical errors and avoid Windows message boxes SetErrorMode(SetErrorMode(0) |

SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX);

// set resource handles

AFX_MODULE_STATE* pModuleState = AfxGetModuleState(); pModuleState->m_hCurrentInstanceHandle = hlnstance; pModuleState->m_hCurrentResourceHandle = hlnstance;

// fill in the initial state for the application CWinApp* pApp = AfxGetAppO; if (pApp != NULL) {

// Windows specific initialization (not done if no CWinApp) pApp->m_hInstance = hlnstance; pApp->m_hPrevInstance = hPrevInstance; pApp->m_lpCmdLine = lpCmdLine; pApp->m_nCmdShow = nCmdShow;

pApp->SetCurrentHandles();

}

// initialize thread specific data (for main thread) if (!afxContextlsDLL) AfxInitThread()/

return TRUE;

}

Похожие статьи: