mfc為微軟創建的一個類qt框架的客戶端程序,只不過因為微軟目前有自己 的親身兒子C#(.net),所以到2010沒有進行維護。然后一些的工業企業還在繼續進行維護相關的內容。我目前就接手一個現在這樣的項目,其實本質與qt的思路是差不多的內容,但是作為一個202屆畢業生,從來沒有搞過這個東西,從頭開始學習。
前期內容
環境搭建
首先是安裝上VS,使用VS Installer,安裝不同種類的mfc框架的東西。
項目搭建
打開VS,創建新項目,搜索模版選擇mfc應用,輸入創建項目的名稱。
后面一步,就是需要選擇應用程序類型,選擇基于對話框。后面直接一鍵完成到底。
項目東西創建之后內容,變成一個框一樣的東西(差不多的內容與qt的ui設置差不多的內容)
VS的mfc整體框架的不同意思
這里部分就是解決方案的地方,存放不同文件的地方!(如果沒有找到相應的解決方案資源管理器,可以在最上面的 “視圖->解決方案資源管理器 ”)
這個就是資源視圖的不同東西,界面的視圖的東西。(有可能看不到資源視圖,需要在最上面的一行的東西找到對應的窗口的位置 不同的版本的VS“其它窗口”的位置不同,點擊上去然后選擇“資源視圖”,可以出現相應的東西)
工具箱框,可以拖選不同的模塊進行處理不同的模塊,目前的內容的使用和qt的Ui組件的拖入差不懂的內容。
安放控件
整個最基本的UI框架底層的不同東西,可以把工具箱里面的不同東西放入這里。不同的控件有不同的使用方法。(本質與信號與槽的差不多的,這邊mfc就是用不同宏定義不同的控件名稱,用不同的操作進行綁定不同的指令,不同的指令有不同是策略)
按鈕鍵
從工具箱拖取一個Button放到窗口的不同位置,雙擊按鈕可以到對應的函數(類似于qt的槽函數)
這里就是創建一個按鈕叫做Button5的一個名字。在資源視圖界面,當你點擊之后就會進入對應函數。可以在里面添加函數
void CTestDlg::OnBnClickedButton5()
{// TODO: 在此添加控件通知處理程序代碼}
靜態文本框(編輯框)
單擊靜態文本框之后,右邊為屬性,最重要的就是ID(一個定義的宏),用于后面的數據獲取,需要用來綁定需要對應的數據。雙擊靜態文本框之后,可以進入整個頁面的類(mfc把一個頁面寫成一個.cpp文件)
這里就是進行數據綁定的機制,使用DXX_Text()函數進行數據綁定。其它的數據獲取的數據函數。這些文件都放在DoDataExchange()函數的不同內容。
DDX_Text(pDX, IDC_EDIT_NAME, m_strName); // 綁定編輯框與CString變量
DDX_Check(pDX, IDC_CHECK_ENABLE, m_bEnable); // 綁定復選框與BOOL變量
DDX_Radio(pDX, IDC_RADIO_OPTION1, m_nOption); // 綁定單選按鈕組與int變量
第一個參數為默認的參數不同管,第二個選擇框或者是按鈕組的宏定義,第三個為綁定的CSstring數據類型。數據獲取需要,手動調用函數把整個頁面的函數獲取下來,要把數據推上去,需要函數推動上去。一般放在觸發的按鈕的不同位置信息。
UpdateData(TRUE); // 觸發DDX和DDV(獲取數據)
UpdateData(FALSE); // 更新控件顯示(把綁定的數據上傳到當前頁面)
窗口彈出
mfc把彈出窗口分成不同的類型,有模態和非模態兩種不同的類型。模態彈出,彈出窗口之后不能點擊其它的窗口的東西。非模態彈出,彈出窗口之后可以同時進行操作其它的窗口不同內容。在mfc之中一個框就是一個類成員,需要自己進行創建這個窗口的類(只需要定義類的名稱)在資源視圖上面點擊添加資源,就會出現一個新的窗。
名字一般與框的相應的作用的名稱差不多!后面在應用這個類進行到主函數聲明(引入.h的文件)。然后直接進行調用這個類,然后彈出窗口功能基本就實現了。
Main.h:
class Main:public {//自動生產的類不想要管內部是怎么實現的TEST Test1;//這里TEST為一個框的宏或者類的定義
}
Main.cpp 這里是非模態彈出
//點擊按鈕函數
On_PushBtton{Test1.DoModal();
}
Main.cpp 這里是模態彈出,IDD_MY_DIALOG是彈出的框的宏定義
Test1.Create(IDD_MY_DIALOG, this);Test1.ShowWindow(SW_SHOW);