需求:實作張三、李四、王五 3 人的課程選擇,并将選課結果送出到清單框中顯示。
實作過程:
1、建立對話框mfc工程。
2、添加控件

tab 順序 控 件 類 型 控件 ID
1 Button IDC_ADD
2 Button IDCANCEL
3 Group Box IDC_STATIC
4 Radio Button IDC_RADIO1
5 Radio Button IDC_RADIO2
6 Radio Button IDC_RADIO3
7 Group Box IDC_STATIC
8 Check Box IDC_CHECK1
9 Check Box IDC_CHECK2
10 Check Box IDC_CHECK3
11 Static Text IDC_STATIC
12 List Box IDC_LIST1
(1)按鈕 1 采用前面介紹過的位圖按鈕類 CButtonBitmap,這就需要載入位圖資源。在
資源視圖視窗裡添加“Bitmap”資源,然後再載入兩幅 Bmp 圖檔,這兩幅圖檔分别顯示按鈕
位圖和按鈕按下時的位圖,其 ID 分别為“IDB_ADD1”和“IDB_ADD2”。
按鈕1屬性設定“owner draw”為“true”。
其他:
MFC中control變量與value變量的差別
control型變量是這個控件所屬類的一個執行個體(對象)可以通過這個變量來對該控件進行一些設定。control型變量可以獲得控件的執行個體,通過這個變量,你可以操縱控件。而value隻是用來傳遞資料,不能對控件進行其它的操作。value型變量僅僅可以獲得該控件的public型變量。
如果你添加了一個m_CtrlEdit的control型變量你可以調用控件支援的所有函數,如:
m_CtrlEdit.GetStyle(...)
獲得控件的輸入内容或者說文本内容:
CString str_name;
m_CtrlEdit.GetWindowText(str_name);
MessageBox(str_name,"提示",0);
而value型變量一般用于向控件傳遞資料,如:變量為CString 類型的 m_Str m_Str="hustwjz";
UpdateData(FALSE); //可以向控件傳遞資料
UpdateData(TRUE); //可以從控件獲得資料
獲得輸入資料後可以進行相應操作.以下是寫檔案用到的,把輸入的内容寫入檔案
UpdateData(TRUE);
student.age=m_age;
strcpy(student.name,m_char);
CString fPath;
fPath=GetAppPath();
IniFileHandle->m_FileName.Format(_T("%s"),fPath+_T("student"));
IniFileHandle->OpenFile(1);
IniFileHandle->Serialize(student);
IniFileHandle->CloseFile();
可以使用成員變量來代替某個控件,當控件發生變化時,該成員變量的值也發生變化;ClassWizard增加成員變量的時候,選擇value類型可以建立一個包含由使用者來輸入控件文本和控件狀态的成員變量;選擇Control類型,我們可以對這個控件直接進行通路;
Value 就是一個變量,control 就是一個控件。主要的差別也就是變量和控件之間的差別,雖然他們實質上都是一樣的。 可是選擇 Value ,MFC 會把控件的内容對應到一個變量上。除非你用其他API取得這個
控件進行操作,否則,就是一個變量而已。主要的用途是 UpdateData,進行資料讀寫。而作為控件,就是把這個東西直接對應到了一個控件對象上去,比如 CEdit 對象。你可以直接用這個對象來進行操作。