學習Visual C++ MFC 簡明教程

以爲學QT就不用學MFC了,所以以前根本就沒想學這個東西,結果發現即使我自己不用這個編程,也要會一些東西來看懂別人的程序,所以開始突擊一下MFC,找了個只有32頁的教程看一下:Visual C++ MFC 簡明教程.

記錄一些東西:

建立項目和編譯代碼

爲了在 Visual C++ 中編譯代碼,你必須要建立一個項目。爲了這麼小的程序來建立一個項目可能有點小題大作,但是,在任何實際的程序中,項目的概念是非常有用的。一個項目主要保存着下面三種不同類型的信息:

1.         它可以記住建立一個可執行程序所需要的所有源程序代碼文件。在這個簡單的例子中,文件 HELLO.CPP 是唯一的源文件,但是在一個大型的應用程序中,爲了便於管理和維護,你可以會有許多個不同的源文件。項目會維護這些不同文件的列表,並當你要建立下一個新的可執行程序時,在必要時編譯它們。

2.         它會記住針對你的應用程序所使用的編譯器和連接器選項。例如,它會記住把哪個庫連接到了執行程序中,你是否預編譯了頭文件等等。

3.         它會記住你想要建立的項目類型: 一個控制檯應用程序,或一個窗口應用程序等等。

你必須告訴項目要使用MFC庫。如果你忽略了這一步,則項目在連接時會出錯,而出錯信息對你毫無幫助。選擇“Project”菜單的“Settings”。在出現的對話框中選擇“General”標籤。在“Microsoft Foundation Classes”組合框中,選擇“Use MFC in a Shared DLL”。然後關閉對話框。

CWnd 類彙集了 Windows 中的所有通用特性、對話框和控制。

頭文件 afxwin.h包含有 MFC 中所使用的所有的類型、類、函數和變量。它也包含了其它頭文件,如 Windows API 庫等。

MFC 建立的每個應用程序都要包括一個單一從 CWinApp 類繼承來的應用程序對象。該對象必須被說明成全局的,並且在你的程序中只能出現一次。

CStatic類,是繼承於CWnd,它是用來顯示靜態文本的,CStatic不接收鍵盤或鼠標事件;A static control is a control used to display text, to draw frames or lines separating other controls, or to display icons. A static control doesn't accept user input, but it can notify its parent of stylus taps if it's created with SS_NOTIFY style.

你用兩行代碼就可以建立一個靜態控制:

CStatic *cs;   

...   

cs = new CStatic();

cs->Create("hello world",            

          WS_CHILD|WS_VISIBLE|SS_CENTER,           

          CRect(50,80, 150, 150),        

          this);

這兩行代碼是典型的MFC建立所有控制的代碼。調用new來爲CStatic類的事例分配內存,然後調用類的構造函數。構造函數是用來完成類所需要的初始化功能的。Create函數建立控制並把它放到屏幕上。

你用兩行代碼就可以建立一個靜態控制:

CStatic *cs;   

...   

cs = new CStatic();

cs->Create("hello world",            

          WS_CHILD|WS_VISIBLE|SS_CENTER,           

          CRect(50,80, 150, 150),        

          this);

這兩行代碼是典型的MFC建立所有控制的代碼。調用new來爲CStatic類的事例分配內存,然後調用類的構造函數。構造函數是用來完成類所需要的初始化功能的。Create函數建立控制並把它放到屏幕上。

WS_CHILD/SS_CENTER等常數中,“SS(Static Style)開頭的表示只能用於CStatic控制。以“WS(Window Style)開頭的常數表示可適用於所有窗口,它們定義在CWnd對象中。

問題:啥是宏???????????????????????????????????????????????????

例子中的宏是這麼寫的:DECLARE_MESSAGE_MAP()

問題:重複一遍,因爲它很重要: OnSize函數總是與消息映射中的ON_WM_SIZE入口想對應。你必須命名處理函數OnSize, 並且它必須接收三個參數。這個到底想說什麼????????????????????????

發佈了30 篇原創文章 · 獲贊 2 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章