MFC控件

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MFC控件

使用Windows标准控件

我们在前面曾提到过,控件是一些行为标准化了的窗口,一般用于对话框或其它窗口中充当与用户交互的元素。在Visual C++中,可以使用的控件分成三类:

(1) Windows标准控件

Windows标准控件由Windows操作系统提供,在Windows 95中还提供了一些新增的控件。所有这些控件对象都是可编程的,我们可以使用Visual C++提供的对话框编辑器把它们添加到对话框中。Microsoft基础类库(MFC)提供了封装这些控件的类,它们列于表6.1。

表6.1 Windows标准控件

续表6.1

前面提到过,在MFC中,类CWnd是所有窗口类的基类,很自然的,它也是所有控件类的基类。Windows标准控件在以下环境下提供:

•Windows 95

•Windows NT 3.51及以后版本

•Win32s 1.3

•注意:

•Visual C++ 4.2及以后版本不再支持Win32s。

(2) ActiveX控件

ActiveX控件可用于对话框中,也可用于HTML文档中。这种控件过去被称为OLE 控件。本书将在专门的章节中来讲述关于ActiveX控件的知识。这里仅指出ActiveX控件使用了与标准控件完全不同的接口和实现方法。

(3) 其它MFC控件类

除了Windows标准控件和自己编写的或者来自于第三方软件开发商的ActiveX 控件以外,MFC还提供了另外三种控件,它们由下面的三个类进行封装:

•类CBitmapButton用于创建以位图作为标签的按钮,位图按钮最多可以包括四个位图图片,分别代表按钮的四种不同状态。

•类CCheckListBox用于创建选择列表框,这种列表框中的每一项前面有一个复选框,以决定该项是否被选中。

•类CDragListBox用于创建一种特殊的列表框,这种列表框允许用户移动列表项。

在本章我们仅讲述第一类控件,即Windows标准控件。所涉及的内容包括各个控件的使用及相应的技巧。

第一节使用对话框编辑器和ClassWizard

对于大多数Windows标准控件,我们一般都使用对话框编辑器来将它们添加到对话框中。

图6. 1 在ResourceView中选择对话框

IDD_DIALOGDEMO_DIALOG

图6. 2 控件的Properties对话框

图6. 3 对话框编辑器的Controls工具窗口

在下面的过程中,我们将一个编辑框控件添加到在第四章创建的基于对话框的MFC框架应用程序的主对话框窗口中。

1. 首先,在Workspace窗口的ResourceView选项内双击DialogDemo resources\Dialog节点下的IDD_DIALOGDEMO_DIALOG图标。上面的操作如图所示。

2. 用鼠标选中标有“要做……”的静态文本控件。右击鼠标,从上下文菜单中选择Properties,打开如图6.2所示的对话框,在Caption文本框中输入新的控件文本:“在下面的文本框中输入一些字符”,然后将静态文本控件拖动到对话框的左上角。

3. 从Controls工具窗口(如图6.3所示,如果在你的资源编辑器中看不到该工具窗口,可以在工具条上右击鼠标,从上下文菜单中选择Controls)中选择编辑

控件图标,在对话框中绘制一个编辑框控件,如图6.4所示。

在该编辑框控件的Properties窗口的General选项卡中输入其ID为IDC_EDIT。然后在Styles选项卡下将Multiline复选框划上勾,并消除Auto HScroll复选框前的勾。

4. 右击该编辑框控件,从上下文菜单中选择ClassWizard命令,打开ClassWizard对话框,该对话框看起来如图6.5所示。

图6. 4 向对话框中添加一个编辑框控件

图6. 5 ClassWizard对话框

单击Member Variables选项卡,确信在Project处选择了DialogDemo,在Class name处选择了CDialogDemoDlg。现在我们为刚才添加的编辑框控件IDC_EDIT

添加一个数据映射入口。在Control IDs处选择IDC_EDIT,单击右边的Add Viable按钮。打开如图6.6所示的对话框。

在Member variable name处链接变量名m_strEdit (这里m表示该变量为类CDialogDemoDlg的一个成员变量,str表明其类型为字符串,即类CString),在Category下拉列表中选择Value (另一种选择是Control,两种选择的不同将在后面的内容中讲述),在Variable type下拉列表中选择CString (还有其它很多数据类型可供选择,但由于这里编辑框中的内容为一字符串,因此CString是最恰当的选择)。单击OK关闭对话框。

图6. 6 为控件映射添加成员变量

5. 检查一下现在的ClassWizard对话框(图

6.7)与图6.5相比有何不同。在图

6.7所示的对话框中下方的Maximum characters文本框中输入50。由字面意思可以很容易猜出其含义,即将编辑框IDC_EDIT中可能的最长字符串的大小限制为50。单击OK关闭对话框。

图6. 7 使用ClassWizard设置数据验证方案

6. 从Workspace窗口的ClassView中双击类CDialogDemoDlg的OnInitDialog 成员函数,使用下面的代码来代替位于语句

return TRUE;

前的// TODO注释:

m_strEdit="您好! 请在这里输入一些字符串。";

UpdateData(FALSE);

7. 在ClassView中双击类CDialogDemoApp的InitInstance成员函数,使用下面的代码来找替位于选择支

if (nResponse == IDOK)

下的//TODO注释:

AfxMessageBox(dlg.m_strEdit);

然后将同一成员函数中的下面的代码行删掉(或注释掉):

m_pMainWnd = &dlg;

8. 编译并运行该应用程序。显示如图6.8所示的对话框。

相关文档
最新文档