-
InitInstance
鎖定
InitInstance是一個虛函數。
InitInstance函數格式
CWinApp::InitInstance
virtual BOOL InitInstance( );
InitInstance返回值
如果初始化成功,則返回非零值;否則返回0。
typedef int BOOL
通常我們使用BOOL類型來決定“是”以及“否”,“是”就是TRUE,“否”就是FALSE。TRUE和FALSE的值就是1和0,它們也是通過宏來直接定義的常量。
InitInstance註釋
Windows允許在同一時刻運行程序的幾份拷貝。在概念上,應用程序的初始化可以被分為兩個部分:一次性的應用程序初始化工作,這些在應用程序第一次運行時完成,以及實例的初始化工作,每次運行程序的一個拷貝時都會執行這些操作,包括第一次運行時。框架中WinMain實現調用這個函數。
重載InitInstance以初始化在Windows下運行的應用程序的每個新實例。通常,你重載InitInstance以構造主窗口對象並設置CWinThread::m_pMainWnd數據成員,使其指向這個窗口。有關重載這個成員函數的更多信息參見“Visual C++ 程序員指南”中的“ CWinApp:應用程序類”。
InitInstance示例
// 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應用類就從這裏派生。
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:20次歷史版本
- 最近更新: 勤奋的CKY0821