CWinApp

是從 CWinThread 派生的,後者表示可能具有一個或多個執行緒的應用程式的主執行執行緒。在最新版本的 MFC 中,InitInstance、Run、ExitInstance 和 OnIdle 成員函式實際位於 CWinThread 類中。此處將這些函式作為 CWinApp 成員來探討,因為探討所關心的是對象作為應用程式對象而不是主執行緒角色

基本介紹

  • 中文名:CWinApp
  • 原型:CWinThread
  • 類別:應用程式類
  • 作用:構造一個CWinApp對象
概述,基本信息,注意,執行順序,CWinApp類成員,數據成員,構造函式,操作符,可重載的函式,初始化,命令操作,

概述

基本信息

CWinApp為應用程式類
MFC 中的主應用程式類封裝用於 Windows 作業系統的應用程式的初始化、運行和終止。基於框架生成的應用程式必須有且僅有一個從 CWinApp 派生的類的對象。在創建視窗之前先構造該對象。
CWinApp 是從 CWinThread 派生的,後者表示可能具有一個或多個執行緒的應用程式的主執行執行緒。在最新版本的 MFC 中,InitInstance、Run、ExitInstance 和 OnIdle 成員函式實際位於 CWinThread 類中。此處將這些函式作為 CWinApp 成員來探討,因為探討所關心的是對象作為應用程式對象而不是主執行緒的角色。

注意

應用程式類構成應用程式的主執行執行緒。使用 Win32 API 函式還可以創建輔助執行執行緒。這些執行緒可以使用 MFC 庫。有關更多信息,請參見多執行緒編程。
與用於 Windows 作業系統的任何程式一樣,框架應用程式也具有 WinMain 函式。但在框架應用程式中不必編寫 WinMain。它由類庫提供,並在應用程式啟動時調用。WinMain 執行註冊視窗類等標準服務。然後它調用應用程式對象的成員函式來初始化和運行應用程式。(可通過重寫由 WinMain 調用的 CWinApp 成員函式來自定義 WinMain。)
為初始化應用程式,WinMain 調用應用程式對象的 InitApplication 和 InitInstance 成員函式。為運行應用程式的訊息循環,WinMain 調用 Run 成員函式。在終止時,WinMain 調用應用程式對象的 ExitInstance 成員函式。

執行順序

注意 本文中以粗體顯示的名稱指示由 Microsoft 基礎類庫和 Visual C++ 提供的元素。以 monospaced 類型顯示的名稱指示您創建或重寫的元素。
基於MFC的應用程式有一個套用對象,它是CWinApp派生類的對象,該對象代表了套用進程的主執行緒。當執行緒執行完並退出執行緒時,由於進程中沒有其他執行緒存在,進程自動結束。類CWinApp從CWinThread派生出來,CWinThread是用戶接口執行緒的基本類。我們在編寫用戶接口執行緒時,需要從CWinThread派生我們自己的執行緒類,ClassWizard可以幫助我們完成這個工作。
先用ClassWizard派生一個新的類,設定基類CwinThread。注意:類的DECLARE_DYNCREATE和IMPLEMENT_DYNCREATE宏是必需的,因為創建執行緒時需要動態創建類的對象。根據需要可將初始化和結束代碼分別放在類的InitInstanceExitInstance函式中。如果需要創建視窗,則可在InitInstance函式中完成。然後創建執行緒並啟動執行緒。可以用兩種方法來創建用戶接口執行緒,MFC提供了兩個版本的AfxBeginThread函式,其中一個用於創建用戶接口執行緒。第二種方法分為兩步進行:首先,調用執行緒類的構造函式創建一個執行緒對象;其次,調用CWinThread::CreateThread函式來創建該執行緒。執行緒建立並啟動後,線上程函式執行過程中一直有效。如果是執行緒對象,則在對象刪除之前,先結束執行緒。CWinThread已經為我們完成了執行緒結束的工作。

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對象

操作符

載入游標資源
載入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
獲得預設的印表機設備

可重載的函式

可被重載以執行Windows的實例初始化,比如創建視窗對象
InitApplication
初始化.
Run
運行預設的訊息循環。可被重載以定製訊息循環
OnIdle
可被重載以執行應用程式指定的空閒時處理
可被重載以在應用程式結束時執行清除操作
在關閉所有的文檔之前隱藏應用程式
關閉所有打開的文檔
在訊息被分派到Windows函式::TranslateMessage和::DispatchMessage之前過濾訊息
SaveAllModified
提示用戶保存所有改變了的文檔
為應用程式實現AfxMessageBox
在訊息到達應用程式之前截取特定的訊息
ProcessWndProcException
截取應用程式的訊息和命令處理函式拋出的未被處理的異常
打開或關閉等待游標
OnDDECommand
框架調用這個函式以回響動態數據交換(DDE)執行命令
WinHelp
調用Windows的WinHelp函式

初始化

載入標準的 xxx.INI 檔案設定並允許MRU檔案列表特性
SetDialogBkColor
設定對話框和訊息框的預設背景顏色
使應用程式的設定保存在註冊表中,而不是xxx.INI檔案中
允許用戶通過Windows的檔案管理器打開數據檔案
RegisterShellFileTypes
在Windows的檔案管理器中註冊所有的應用程式文檔類型
使控制項具有三維外觀(動態庫)
Enable3dControlsStatic
使控制項具有三維外觀(靜態庫

命令操作

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命令

相關詞條

熱門詞條

聯絡我們