freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

mfc基礎(chǔ)介紹(編輯修改稿)

2025-08-28 17:20 本頁面
 

【文章內(nèi)容簡介】 輸出 “ hello world”。 復(fù)雜的程序可能在其主窗口和對話框中需要上百個控制。 應(yīng)該注意,在應(yīng)用程序中有兩種不同的方法來建立用戶控制。這里所介紹的是用 C++ 代碼方式來建立控制。但是,在比較大的應(yīng)用程序中,這種方法是不可行的。因此,在通常情況下要使用資源文件的圖形編輯器來建立控制。這種方法要方便得多。 2022/8/20 43 理解 “ hello world”的代碼 下面列出了你在上一講中已經(jīng)輸入、編譯和運行的 “ hello world”程序的代碼。添加行號是為了討論方便。我們來一行行地研究它,你會更好的理解 MFC 建立應(yīng)用程序的方式。 如果你還沒有編譯和運行該代碼,應(yīng)該按上一講的方法去做。 1 // 2 include 3 // Declare the application class 4 class CHelloApp : public CWinApp 5 { 6 public: 7 virtual BOOL InitInstance()。 8 }。 2022/8/20 44 9 // Create an instance of the application class 10 CHelloApp HelloApp。 11 // Declare the main window class 12 class CHelloWindow : public CFrameWnd 13 { 14 CStatic* cs。 15 public: 16 CHelloWindow()。 17 }。 18 // The InitInstance function is called each 19 // time the application first executes. 20 BOOL CHelloApp::InitInstance() 21 { 22 m_pMainWnd = new CHelloWindow()。 23 m_pMainWndShowWindow(m_nCmdShow)。 24 m_pMainWndUpdateWindow()。 25 return TRUE。 26 } 2022/8/20 45 27 // The constructor for the window class 28 CHelloWindow::CHelloWindow() 29 { 30 // Create the window itself 31 Create(NULL, 32 Hello World!, 33 WS_OVERLAPPEDWINDOW, 34 CRect(0,0,200,200))。 35 // Create a static label 36 cs = new CStatic()。 37 csCreate(hello world, 38 WS_CHILD|WS_VISIBLE|SS_CENTER, 39 CRect(50,80,150,150), 40 this)。 41 } 2022/8/20 46 把上面的代碼看一遍,以得到一整體印象。該程序由六小部分組成,每一部分都起到很重要的作用。 首先,該程序包含了頭文件 (第 2 行)。該頭文件包含有 MFC 中所使用的所有的類型、類、函數(shù)和變量。它也包含了其它頭文件,如 Windows API 庫等。 第 3 至 8 行從 MFC 說明的標(biāo)準(zhǔn)應(yīng)用程序類 CWinApp 繼承出了新的應(yīng)用程序類 CHelloApp。 該新類是為了要重載 CWinApp 中的 InitInstance 成員函數(shù)。 InitInstance 是一個應(yīng)用程序開始執(zhí)行時要調(diào)用的可重載函數(shù)。 2022/8/20 47 在第 10行中,說明了應(yīng)用程序作為全局變量的一個事例。該實例是很重要的,因為它要影響到程序的執(zhí)行。當(dāng)應(yīng)用程序被裝入內(nèi)存并開始執(zhí)行時,全局變量的建立會執(zhí)行 CWinApp 類的缺省構(gòu)造函數(shù)。該構(gòu)造函數(shù)會自動調(diào)用在 18至 26行定義的 InitInstance 函數(shù)。 在第 11至 17中, CHelloWindow 類是從 MFC 中的 CFrameWnd 類繼承來的。 CHelloWindow 是作為應(yīng)用程序在屏幕上的窗口。建立新的類以便實現(xiàn)構(gòu)造函數(shù)、析構(gòu)函數(shù)和數(shù)據(jù)成員。 第 18至 26行實現(xiàn)了 InitInstance 函數(shù)。該函數(shù)產(chǎn)生一個 CHelloWindow 類的事例,因此會執(zhí)行第 27行至 41行中類的構(gòu)造函數(shù)。它也會把新窗口放到屏幕上。 第 27至 41實現(xiàn)了窗口的構(gòu)造函數(shù)。該構(gòu)造函數(shù)實際是建立了窗口,然后在其中建立一個靜態(tài)文本控制。 2022/8/20 48 要注意的是,在該程序中沒有 main 或 WinMain 函數(shù),也沒有事件循環(huán)。然而我們從上一講在執(zhí)行中知道它也處理了事件。窗口可以最大或最小化、移動窗口等等。所有這些操作都隱藏在主應(yīng)用程序類 CWinApp 中,并且我們不必為它的事件處理而操心,它都是自動執(zhí)行、在 MFC 中不可見的。 下一節(jié)中,將詳細介紹程序的各部分。你可能不能馬上全都理解得很好 : 但你最好先讀完它以獲得第一印象。在下一講中,會介紹一些特殊的例子,并偶把各片段組合在一起,有助于你能更好的理解。 2022/8/20 49 程序?qū)ο? 用 MFC 建立的每個應(yīng)用程序都要包括一個單一從 CWinApp 類繼承來的應(yīng)用程序?qū)ο?。該對象必須被說明成全局的 (第 10行 ),并且在你的程序中只能出現(xiàn)一次。 從 CWinApp 類繼承的對象主要是處理應(yīng)用程序的初始化,同時也處理應(yīng)用程序主事件循環(huán)。CWinApp 類有幾個數(shù)據(jù)成員和幾個成員函數(shù)。在上面的程序中,我們只重載了一個 CWinApp 中的虛擬函數(shù) InitInstance。 2022/8/20 50 應(yīng)用程序?qū)ο蟮哪康氖浅跏蓟涂刂颇愕某绦?。因? Windows 允許同一個應(yīng)用程序的多個事例在同時執(zhí)行,因此 MFC 把初始化過程分成兩部分并使用兩個函數(shù) InitApplication 和 InitInstance 來處理它。此處,我們只使用了一個 InitInstance 函數(shù),因為我們的程序很簡單。當(dāng)每次調(diào)用應(yīng)用程序時都會調(diào)用一個新的事例。第 3至 8行的代碼建立了一個稱為 CHelloApp 的類,它是從 CWinApp 繼承來的。它包含一個新的 InitInstance 函數(shù),是從 CWinApp 中已存在的函數(shù) (不做任何事情 )重載來的 : 3 // Declare the application class 4 class CHelloApp : public CWinApp 5 { 6 public: 7 virtual BOOL InitInstance()。 8 }。 2022/8/20 51 在重載的 InitInstance 函數(shù)內(nèi)部,第 18至 26行,程序使用 CHelloApp 的數(shù)據(jù)成員 m_pMainWnd 來建立并顯示窗口 : 18 // The InitInstance function is called each 19 // time the application first executes. 20 BOOL CHelloApp::InitInstance() 21 { 22 m_pMainWnd = new CHelloWindow()。 23 m_pMainWndShowWindow(m_nCmdShow)。 24 m_pMainWndUpdateWindow()。 25 return TRUE。 26 } InitInstance 函數(shù)返回 TRUE 表示初始化已成功的完成。如果返回了 FALSE, 則表明應(yīng)用程序會立即終止。在下一節(jié)中我們將會看到窗口初始化的詳細過程。 2022/8/20 52 當(dāng)應(yīng)用程序?qū)ο笤诘?10行建立時,它的數(shù)據(jù)成員 (從 CWinApp 繼承來的 ) 會自動初始化。例如, m_pszAppName、 m_lpCmdLine 和 m_nCmdShow 都包含有適當(dāng)?shù)某跏蓟?。你可參? MFC 的幫助文件來獲得更詳細的信息。我們將使用這些變量中的一個。 2022/8/20 53 窗口對象 MFC 定義了兩個類型的窗口 : 1) 框架窗口,它是一個全功能的窗口,可以改變大小、最小化、最大化等等 。 2) 對話框窗口,它不能改變大小??蚣艽翱谑堑湫偷闹鲬?yīng)用程序窗口。 在下面的代碼中,從 CFrameWnd 中繼承了一個新的類 CHelloWindow: 11 // Declare the main window class 12 class CHelloWindow : public CFrameWnd 13 { 14 CStatic* cs。 15 public: 16 CHelloWindow()。 17 }。 2022/8/20 54 它包括一個新的構(gòu)造函數(shù),同時還有一個指向程序中所使用的唯一用戶界面控制的數(shù)據(jù)成員。你多建立的每個應(yīng)用程序在主窗口中都會有唯一的一組控制。因此,繼承類將有一個重載的構(gòu)造函數(shù)以用來建立主窗口所需要的所有控制。典型情況下,該類會包含有一個析構(gòu)函數(shù)以便在窗口關(guān)閉時來刪除他們。我們這里沒有使用析構(gòu)函數(shù)。在第四講中,我們將會看到繼承窗口類也會說明一個消息處理函數(shù)來處理這些控制在響應(yīng)用戶事件所產(chǎn)生的消息。 2022/8/20 55 典型地,一個應(yīng)用程序?qū)⒂幸粋€主應(yīng)用程序窗口。因此, CHelloApp 應(yīng)用程序類定義了一個名為 m_pMainWnd 成員變量來指向主窗口。為了建立該程序的主窗口, InitInstance 函數(shù) (第 18至 26行)建立了一個 CHelloWindow 事例,并使用 m_pMainWnd 來指向一個新的窗口。我們的 CHelloWindow 對象是在第 22行建立的 : 18 // The InitInstance function is called each 19 // time the application first executes. 20 BOOL CHelloApp::InitInstance() 21 { 22 m_pMainWnd = new CHelloWindow()。 23 m_pMainWndShowWindow(m_nCmdShow)。 24 m_pMainWndUpdateWindow()。 25 return TRUE。 26 } 2022/8/20 56 只建立一個簡單的框架窗口是不夠的。還要確保窗口能正確地出現(xiàn)在屏幕上。首先,代碼必須要調(diào)用窗口的 ShowWindow 函數(shù)以使窗口出現(xiàn)在屏幕上 (第 23行 )。其次,程序必須要調(diào)用 UpdateWindow 函數(shù)來確保窗口中的每個控制和輸出能正確地出現(xiàn)在屏幕上 (第 24行 )。 你可能奇怪, ShowWindow 和 UpdateWindow 函數(shù)是在哪兒定義的。例如,如果你要查看以便了解它們,你可能要查看 MFC 的幫助文件中的 CFrameWnd 定義部分。但是 CFrameWnd 中并不包含有這些成員函數(shù)。 CFrameWnd 是從 CWnd 類繼承來的。你可以查看 MFC 文檔中的 CWnd, 你會發(fā)現(xiàn)它包含有 200多個不同的成員函數(shù)。顯然,你不能在幾分鐘內(nèi)掌握這些函數(shù),但是你可以掌握其中的幾個,如 ShowWindow 和 UpdateWindow。 2022/8/20 57 現(xiàn)在讓我們花幾分鐘來看一下 MFC 幫助文件中的 CWnd::ShowWindow 函數(shù)。為此,你你可以單擊幫助文件中的 Search 按鈕,并輸入 “ ShowWindow”。 找到后,你會注意到, ShowWindow 只有一個參數(shù),你可以設(shè)置不同的參數(shù)值。我們把它設(shè)置成我們程序中 CHelloApp 的數(shù)據(jù)成員變量 m_nCmdShow (第 23行 )。 m_nCmdShow 變量是用來初始化應(yīng)用程序啟動的窗口顯示方式的。例如,用戶可能在程序管理器中啟動應(yīng)用程序,并可通過應(yīng)用程序?qū)傩詫υ捒騺砀嬷绦蚬芾砥鲬?yīng)用程序在啟動時要保持最小化狀態(tài)。 m_nCmdShow 變量將被設(shè)置成 SW_SHOWMINIMIZED, 并且應(yīng)用程序會以圖標(biāo)的形式來啟動,也就是說,程序啟動后,是一個代表該程序的圖標(biāo)。 m_nCmdShow 變量是一種外界與應(yīng)用程序通訊的方式。如果你愿意,你可以用不同的 m_nCmdShow 值來試驗 ShowWindow 的效果。但要重新編譯程序才能看到效果。 2022/8/20 58 第 22
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1