InitInstance是一個虛函式。
基本介紹
- 中文名:InitInstance
- 重載:虛函式
- 初始:Dos頭
- 示例: AppWizard
- 返回值:如果初始化成功,則返回非零值
函式格式,返回值,注釋,示例,
函式格式
CWinApp::InitInstance
virtual BOOL InitInstance( );
返回值
如果初始化成功,則返回非零值;否則返回0。
typedef int BOOL
通常我們使用BOOL類型來決定“是”以及“否”,“是”就是TRUE,“否”就是FALSE。TRUE和FALSE的值就是1和0,它們也是通過宏來直接定義的常量。
注釋
Windows允許在同一時刻運行程式的幾份拷貝。在概念上,應用程式的初始化可以被分為兩個部分:一次性的應用程式初始化工作,這些在應用程式第一次運行時完成,以及實例的初始化工作,每次運行程式的一個拷貝時都會執行這些操作,包括第一次運行時。框架中WinMain實現調用這個函式。
重載InitInstance以初始化在Windows下運行的應用程式的每個新實例。通常,你重載InitInstance以構造主視窗對象並設定CWinThread::m_pMainWnd數據成員,使其指向這個視窗。有關重載這個成員函式的更多信息參見“Visual C++ 程式設計師指南”中的“ CWinApp:應用程式類”。
示例
// AppWizard 根據你選擇的選項實現重載的InitInstance函式。
// 例如,對於下面由AppWizard創建的代碼,選擇了單文檔界面(SDI)選項。
// 你可以在AppWizard創建的代碼中加入其它的每個實例都執行的初始化代碼。
BOOL CMyApp::InitInstance()
{
// 標準的初始化工作
// 如果你沒有使用這些特性,並且希望減小最終可執行程式的大小,
// 你應當從下面的初始化例程中移去不必要的代碼。
SetDialogBkColor(); // 將對話框的背景色設為灰色。
LoadStdProfileSettings(); // 載入標準的INI檔案選項(包括MRU)
// 註冊應用程式的文檔模板。文檔模板
// 被用作文檔、框架視窗和視圖之間的聯繫。
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CMyDoc),
RUNTIME_CLASS(CMainFrame), // SDI的主框架視窗
RUNTIME_CLASS(CMyView));
AddDocTemplate(pDocTemplate);
// create a new (empty) document
OnFileNew();
if (m_lpCmdLine[0] != '\0')
{
// 創建一個新(空的)文檔
}
return TRUE;
}
MFC對WindowsAPI進行了封裝。在用嚮導編譯成的二進制代碼,MFC編譯器連結器把源檔案編譯成PE檔案格式存儲在磁碟上。程式執行的時候,從PE檔案頭開始執行,在進入Winmain函式之前,進行一系列的必備的初始化。 MFC對這一系列的過程進行了封裝。提供給編程人員的第一個裸露程式入口就是CWinApp的InitInstance(),其實程式的入口依然是WinMain()函式。大家都知道,每個程式都有擁有一個進程,每個進程至少有一個執行緒就是主執行緒。CWinThread類是MFC用來封裝執行緒的,這個主執行緒就是在WinMain函式中創建的,包括UI執行緒和工作者執行緒。因此每個MFC程式至少使用一個CWinThread派生類。被MFC程式設計師熟知的CWinApp套用類就從這裡派生。