-
CWinApp
鎖定
是從 CWinThread 派生的,後者表示可能具有一個或多個線程的應用程序的主執行線程。在最新版本的 MFC 中,InitInstance、Run、ExitInstance 和 OnIdle 成員函數實際位於 CWinThread 類中。此處將這些函數作為 CWinApp 成員來探討,因為探討所關心的是對象作為應用程序對象而不是主線程的角色。
- 中文名
- CWinApp
- 原 型
- CWinThread
- 類 別
- 應用程序類
- 作 用
- 構造一個CWinApp對象
CWinApp基本信息
CWinApp為應用程序類
MFC 中的主應用程序類封裝用於 Windows 操作系統的應用程序的初始化、運行和終止。基於框架生成的應用程序必須有且僅有一個從 CWinApp 派生的類的對象。在創建窗口之前先構造該對象。
與用於 Windows 操作系統的任何程序一樣,框架應用程序也具有 WinMain 函數。但在框架應用程序中不必編寫 WinMain。它由類庫提供,並在應用程序啓動時調用。WinMain 執行註冊窗口類等標準服務。然後它調用應用程序對象的成員函數來初始化和運行應用程序。(可通過重寫由 WinMain 調用的 CWinApp 成員函數來自定義 WinMain。)
為初始化應用程序,WinMain 調用應用程序對象的 InitApplication 和 InitInstance 成員函數。為運行應用程序的消息循環,WinMain 調用 Run 成員函數。在終止時,WinMain 調用應用程序對象的 ExitInstance 成員函數。
CWinApp執行順序
注意 本文中以粗體顯示的名稱指示由 Microsoft 基礎類庫和 Visual C++ 提供的元素。以 monospaced 類型顯示的名稱指示您創建或重寫的元素。
基於MFC的應用程序有一個應用對象,它是CWinApp派生類的對象,該對象代表了應用進程的主線程。當線程執行完並退出線程時,由於進程中沒有其他線程存在,進程自動結束。類CWinApp從CWinThread派生出來,CWinThread是用户接口線程的基本類。我們在編寫用户接口線程時,需要從CWinThread派生我們自己的線程類,ClassWizard可以幫助我們完成這個工作。
先用ClassWizard派生一個新的類,設置基類為CwinThread。注意:類的DECLARE_DYNCREATE和IMPLEMENT_DYNCREATE宏是必需的,因為創建線程時需要動態創建類的對象。根據需要可將初始化和結束代碼分別放在類的InitInstance和ExitInstance函數中。如果需要創建窗口,則可在InitInstance函數中完成。然後創建線程並啓動線程。可以用兩種方法來創建用户接口線程,MFC提供了兩個版本的AfxBeginThread函數,其中一個用於創建用户接口線程。第二種方法分為兩步進行:首先,調用線程類的構造函數創建一個線程對象;其次,調用CWinThread::CreateThread函數來創建該線程。線程建立並啓動後,在線程函數執行過程中一直有效。如果是線程對象,則在對象刪除之前,先結束線程。CWinThread已經為我們完成了線程結束的工作。
CWinApp成員
CWinApp數據成員
m_pszAppName | 指定了應用程序的名字 |
m_hInstance | 標識了應用程序的當前實例 |
m_hPrevInstance | 在32位應用程序中被設為NULL |
m_lpCmdLine | 指向一個以null結尾的字符串,指定了應用程序的命令行(就是程序啓動時傳進來的字符,一般放在快捷方式裏面的啓動地址最後面,可以通過空格傳入多個數據乃至數據結構) |
m_nCmdShow | 指定最初如何顯示窗口 |
m_bHelpMode | 指明用户是否處於Help上下文模式(通常用SHIFT+F1激活) |
m_pActiveWnd | 當一個OLE服務器是現場可激活時,它指向容器應用程序的主窗口 |
m_pszExeName | 應用程序的模塊名字 |
m_pszHelpFilePath | 應用程序的幫助文件的路徑 |
m_pszProfileName | 應用程序的。INI文件名 |
m_pszRegistryKey | 用於確定保存應用程序主要設置的完整的註冊表鍵 |
m_pDocManager | 用於保存文檔模板管理類的指針(MSDN中沒有這個數據成員) |
CWinApp構造函數
CWinApp 構造一個CWinApp對象
CWinApp操作符
載入光標資源 | |
載入WINDOWS.H中IDC_常量所指定的Windows預定義光標 | |
LoadOEMCursor | 載入WINDOWS.H中OCR_常量所指定的WindowsOEM預定義光標 |
載入圖標資源 | |
LoadStandardIcon | 載入WINDOWS.H中IDI_常量所指定的Windows預定義圖標 |
LoadOEMIcon | 載入WINDOWS.H中OIC_常量所指定的WindowsOEM預定義圖標 |
檢查應用程序的命令行是否指定/Automation選項。已不用。應當在調用ParseCommandLine之後使用CCommandLineInfo::m_bRunEmbedded中的值 | |
RunEmbedded | 檢查應用程序的命令行是否指定/Embedding選項。已不用。應當在調用ParseCommandLine之後使用CCommandLineInfo::m_bRunEmbedded中的值 |
ParseCommandLine | 解析命令行中的每個參數和標誌 |
ProcessShellCommand | 處理命令行參數和標誌 |
從應用程序的。INI文件的一個入口中獲取一個整數 | |
WriteProfileInt | 將一個整數寫到應用程序的。INI文件的入口 |
從應用程序的。INI文件的一個入口中獲取一個字符串 | |
將一個字符串寫到應用程序的。INI文件的入口 | |
將一個文檔模板加到應用程序的可用文檔模板列表中 | |
GetFirstDocTemplatePosition | 獲取第一個文檔模板的位置 |
GetNextDocTemplate | 獲得文檔模板的位置。可以遞歸調用 |
由框架調用,用以從文件打開一個文檔 | |
將一個文件名加入最近使用(MRU)的文件列表 | |
SelectPrinter | 選擇先前由用户在打印對話框中指定的打印機 |
創建一個打印機設備環境 | |
GetPrinterDeviceDefaults | 獲得缺省的打印機設備 |
CWinApp可重載的函數
InitApplication | 初始化. |
Run | 運行缺省的消息循環。可被重載以定製消息循環 |
OnIdle | 可被重載以執行應用程序指定的空閒時處理 |
可被重載以在應用程序結束時執行清除操作 | |
在關閉所有的文檔之前隱藏應用程序 | |
關閉所有打開的文檔 | |
在消息被分派到Windows函數::TranslateMessage和::DispatchMessage之前過濾消息 | |
SaveAllModified | 提示用户保存所有改變了的文檔 |
為應用程序實現AfxMessageBox | |
在消息到達應用程序之前截取特定的消息 | |
ProcessWndProcException | 截取應用程序的消息和命令處理函數拋出的未被處理的異常 |
打開或關閉等待光標 | |
OnDDECommand | 框架調用這個函數以響應動態數據交換(DDE)執行命令 |
WinHelp | 調用Windows的WinHelp函數 |
CWinApp初始化
載入標準的 xxx.INI 文件設置並允許MRU文件列表特性 | |
SetDialogBkColor | 設置對話框和消息框的缺省背景顏色 |
使應用程序的設置保存在註冊表中,而不是xxx.INI文件中 | |
允許用户通過Windows的文件管理器打開數據文件 | |
RegisterShellFileTypes | 在Windows的文件管理器中註冊所有的應用程序文檔類型 |
使控件具有三維外觀(動態庫) | |
Enable3dControlsStatic | 使控件具有三維外觀(靜態庫) |
CWinApp命令操作
OnFileNew | 實現ID_FILE_NEW命令 |
OnFileOpen | 實現ID_FILE_OPEN命令 |
OnFilePrintSetup | 實現ID_FILE_PRINT_SETUP命令 |
OnContextHelp | 處理應用程序內的SHIFT+F1命令 |
OnHelp | 處理應用程序內的F1幫助命令(使用當前的上下文) |
OnHelpIndex | 處理ID_HELP_INDEX命令,提供缺省的幫助主題 |
OnHelpFinder | 處理ID_HELP_FINDER和ID_DEFAULT_HELP命令 |
OnHelpUsing | 處理ID_HELP_USING命令 |
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:22次歷史版本
- 最近更新: 案巴鸭怀于捌