AfxWinInit
這個函式被MFC 提供的 WinMain 函式呼叫,做為CWinApp 初始化一部分以初始化 MFC。
BOOL AFXAPI AfxWinInit(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow
);
參數
hInstance
目前執行中之模組的控制代碼。hPrevInstance
對應用程式的一個執行個體的控制代碼。 對於 Win32 架構應用程式,這個參數一定是 NULL。lpCmdLine
對指定命令列以 Null 結束之字串的點為應用程式。nCmdShow
指定 GUI 應用程式的主視窗將如何顯示。
備註
如需主控台應用程式,而不使用 MFC 所提供的 WinMain 函式,您必須直接呼叫 AfxWinInit 初始化 MFC。
如果您呼叫 AfxWinInit ,您應該宣告 CWinApp 類別執行個體。 如需主控台應用程式,您可以選擇不是從 CWinApp 衍生您自己的類別並不直接使用 CWinApp 執行個體。 如果您在 main的實作,決定將應用程式的所有功能將這項技術是適當的。
注意事項 |
---|
在建立組件的啟動內容, MFC 會使用使用者模組所提供的資訊清單資源。啟動內容在 AfxWinInit建立。如需詳細資訊,請參閱MFC 模組狀態的啟用內容支援。 |
範例
#include <afx.h>
#include <afxdb.h>
int _tmain(int /*argc*/, TCHAR* /*argv[]*/, TCHAR* /*envp[]*/)
{
int nRetCode = 0;
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
_tprintf(_T("Fatal Error: MFC initialization failed\n"));
nRetCode = 1;
}
else
{
// try to connect to an ODBC database that doesn't exist
// (this wouldn't work at all without initializing MFC)
CDatabase db;
try
{
db.Open(_T("This Databsae Doesn't Exist"));
// we shouldn't realistically get here
_tprintf_s(_T("Successful!\n")
_T("Closing ...\n"));
db.Close();
_tprintf_s(_T("Closed!"));
}
catch (CDBException* pEx)
{
// we got an exception! print an error message
// (this wouldn't work without initializing MFC)
TCHAR sz[1024];
_tprintf_s(_T("Error: "));
if (pEx->GetErrorMessage(sz, 1024))
_tprintf_s(sz);
else
_tprintf_s(_T("No error message was available"));
_tprintf_s(_T("\n"));
pEx->Delete();
nRetCode = 1;
}
}
return nRetCode;
}
需求
標題: afxwin.h