天天看点

MFC按钮、列表控件应用实例(一)

需求:实现张三、李四、王五 3 人的课程选择,并将选课结果提交到列表框中显示。

实现过程:

1、建立对话框mfc工程。

2、添加控件

MFC按钮、列表控件应用实例(一)

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   对象。你可以直接用这个对象来进行操作。