virtual BOOL InitInstance( );
返回值
如果初始化成功,則返回非零值;否則返回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;
}
學過PE檔案格式,你就明白,程式在進入WinMain之前要做很多事情,比如初始Dos頭,分配函式表,初始化全局變數。之後才進入程式入口(WinMain)
MFC對WindowsAPI進行了封裝。在用嚮導編譯成的二進時代碼,MFC編譯器連結器把源檔案編譯成PE檔案格式存儲在磁碟上。程式執行的時候,從PE檔案頭開始執行,在進入Winmain函式之前,進行一系列的必備的初始化。 MFC對這一系列的過程進行了封裝。提供給編程人員的第一個裸露程式入口就是CWinApp的InitInstance(),其實程式的入口依然是WinMain()函式。大家都知道,每個程式都有擁有一個進程,每個進程至少有一個執行緒就是主執行緒。CWinThread類是MFC用來封裝執行緒的,這個主執行緒就是在WinMain函式中創建的,包括UI執行緒和工作者執行緒。因此每個MFC程式至少使用一個CWinThread派生類。被MFC程式設計師熟知的CWinApp套用類就從這裡派生。
InitInstance是CWinThread的一個虛函式,InitInstance就是“初始化實例”的意思,可見,它是在實例創建時首先被調用的。應用程式總要重載這個虛函式,進行系統設定,創建運行環境。例如,主視窗一定要在InitInstance()中創建,因為該函式退出後就進入該執行緒的訊息循環。
MFC執行流程: _tWinMain(WinMain的別名,用define替換的)-》AfxWinMain->初始化執行緒,調用InitInstance初始化視窗,調用Run函式進入訊息循環。
相關詞條
-
InitInstance
CWin Win itIn
-
MFC 簡明教程
: virtual BOOL InitInstance...
-
CWinApp
。在最新版本的 MFC 中,InitInstance、Run...的 InitApplication 和 InitInstance 成員函式。為運行...的InitInstance和ExitInstance函式中。如果需要創建視窗...
概述 執行順序 CWinApp類成員 -
CWinThread
InitInstance Windows允許同時運行一個應用程式的多個備份,又稱為運行一個程式的多個實例。InitInstance就是“初始化實例...,進行系統設定,創建運行環境。例如,主視窗一定要在InitInstance...
-
MFC[微軟基礎類庫]
),就可以產生一個自己需要的視窗(即需要什麼樣就在InitInstance...
簡單介紹 特點 關鍵技術 重要MFC MFC類別 -
套接字
分類常用的TCP/IP協定的3種套接字類型如下所示。流式套接字(SOCK_STREAM):流式套接字用於提供面向連線、可靠的數據...
分類 簡介 連線方式 主要參數 分類介紹 -
SetDialogColor
函式簡介 SetDialogColor()可以改變對話框的背景顏色和文本顏色。該函式一般在應用程式類的InitInstance函式中調用,設定...:Bool CMyApp::InitInstance...
函式簡介 舉例說明 -
CMyApp
的成員函式是InitInstance。一個CMyApp類型的對象實例生成時,系統會調用InitInstance函式完成生產該新實例的一些初始化工作。 ...
-
COleLinkingDoc
的CWinApp派生類的成員函式InitInstance中,創建一個文檔模板...InitInstance函式的示例,請參見MFC示例OCLIENT中...