MFC單文檔


一、創建並運行MFC單文檔程序

1、創建單文檔程序

這里使用的是VS2017。首先,打開VS2017,選擇文件->新建->項目,然后選擇Visual C++ -> MFC /ATL>MFC應用程序 ,如下圖所示:

 

修改名稱(或默認),修改位置(或默認),點擊確定。然后接下來可以看到如下界面:

 

應用程序類型選擇“單個文檔”,其他設置默認,然后點擊完成即可創建成功。

2、運行單文檔程序

點擊"本地Windows調試器"或者使用Ctrl+F5即可運行,得到視圖窗口,如下圖所示:

 

 

二、工作區

1、資源管理器

可以看到屏幕右側自帶了資源管理器,用來管理各類代碼。

若沒有或不慎關閉,可以從資源->解決方案資源管理器打開。

 

2、資源視圖

資源視圖,用於管理程序運行時的視圖。

可從視圖 ->其他窗口 -> 資源視圖,或者快捷鍵ctrl+shift+E打開。

 

3、類視圖

類視圖用於將視圖對應的不同請求方式以類中的不同方法來區別定義。

可從視圖 -> 類視圖,或者快捷鍵ctrl+shift+C打開。

 

三、添加菜單及相應事件

1、新建菜單

打開資源視圖,點擊進入IDR_MAINFRAME,如下所示:

 

然后在“幫助(H)”后面的空白框中(即箭頭所指處)填入新建菜單的名字,然后點擊其子菜單處的空白方框,同樣寫入新建子菜單的名字,如下所示:

 

 

2、添加事件

首先,修改子菜單的ID(默認亦可),單擊子菜單,然后在菜單編輯器中修改其ID屬性值,這里我將其改為ChildMenu。

 

接下來,右鍵子菜單,選擇添加事件處理程序,如下:

 

 

然后在事件處理向導處選擇消息類型為COMMAND,在類列表中選中C+”你的項目名稱“+View(若你的項目名為Test則為CTestView),然后點擊添加編輯,如下:

 

 

然后會跳轉到指定cpp文件中,並且自動生成函數名。

現在來編寫相應函數內容,我在里面寫了一段代碼,它的作用是彈出小窗口,同時顯示出“1",如下:

 

最后,運行程序,測試子菜單事件:

在上圖中可以看到,我們新增的菜單。

點擊子菜單:

 

結果跟預想的一樣,出現了一個小窗口,同時窗口中顯示出”1“。

 

四、添加彈出框

 

1、創建彈出框

在資源視圖中,右鍵Dialog->添加資源,然后選擇Dialog點擊新建,即可創建成功。

 

 

我們可以看到Dialog中多了一個對象,就是我們新建的彈出框。

 

2、調用彈出框

創建了彈出框,之后該如何調用它呢,或者說該怎么讓它彈出來呢?

1)添加跳出框類對象

首先,修改彈出框ID(默認亦可),點擊IDD_DIALOG1,在對話框節點中,修改其ID屬性,我將其改為Test。

然后右鍵彈出框,點擊添加類:

 

 

填入類名(注意類名不可與ID重復,不論是菜單ID或者是彈出框ID),我寫的是TestDLG,點擊確定即可:

 

2)在菜單中調用彈出框

點擊進入資源視圖->Menu->IDR_MAINFRAME中,找到之前創建的子菜單,右鍵子菜單->添加事件處理程序->CXXXView,點擊編輯代碼。

 

接下來,給跳轉后的cpp文件加上“TestDLG.h”頭文件(頭文件名字=你的彈出框類名.h):

 

然后編輯子菜單事件對應的函數,在其中調用我們剛才創建的彈出框。

 

然后運行程序,點擊子菜單,即可看到我們剛才的彈出框被調用。

 

3、給彈出框添加常用控件

點擊進入資源視圖->Dialog->Test,找到剛才新建的彈出框,可以看到界面上有一個工具箱,若沒有,可使用Crtl+Alt+x快捷鍵打開。

1)Button控件

按鈕,將Button拖到彈出框上,可以通過修改Button的Caption屬性,讓Button上顯示出不同的文字。

 

雙擊按鈕可以編輯按鈕點擊事件:

 

2)Static Text

靜態文本,可以通過修改其Caption屬性,令其顯示不同的文字。

3)Edit Control

文本框,可用於輸入文本內容。

可通過GetDlgItemInt(文本框ID)獲取文本框內的數字內容(Int類型)

可通過GetDlgItem(文本框ID)->GetWindowText(CString類型變量)獲取文本框的字符串內容(CString類型)

 

介紹完后,我們可以利用這些控件實現一點簡單的功能:通過點擊按鈕顯示文本框中的內容。

控件布局如下所示:

 

編輯按鈕響應事件,獲取文本框中的字符串,並通過彈出小窗口的形式顯示出來:

 

運行程序,調出彈窗,並在文本框中寫入內容,點擊按鈕,可以看到,文本框中內容通過小窗口顯示了出來:

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM