MFC控件使用详细教程

合集下载

MFC_基本控件使用

MFC_基本控件使用

MFC_基本控件使用MFC(Microsoft Foundation Class)是一种用于开发Windows应用程序的编程框架,它提供了一系列的类和函数,方便开发者快速地创建Windows界面和处理事件。

在MFC中,基本控件是开发应用程序的重要组成部分,它们用于显示和交互用户界面。

本文将介绍MFC中几种常用的基本控件以及它们的使用方法。

1. 按钮控件(CButton):按钮控件用于接收用户的点击操作,通常用于触发相应的事件处理函数。

创建按钮控件的方法如下:1)在资源视图中右击对应的对话框,选择“添加控件”;2)选择“按钮”并将其拖动到对话框上;3)设置按钮的属性,如ID、文本、尺寸等。

1)在资源视图中右击对应的对话框,选择“添加控件”;组合框控件允许用户从预定义的选项中进行选择,类似于下拉列表。

创建组合框控件的方法如下:1)在资源视图中右击对应的对话框,选择“添加控件”;2)选择“组合框”并将其拖动到对话框上;3)设置组合框的属性,如ID、选项列表、尺寸等。

4. 列表框控件(CListBox):列表框控件用于显示一个选项列表,并且可以支持多选。

创建列表框控件的方法如下:1)在资源视图中右击对应的对话框,选择“添加控件”;2)选择“列表框”并将其拖动到对话框上;3)设置列表框的属性,如ID、选项列表、尺寸等。

5. 树形视图控件(CTreeCtrl):树形视图控件用于显示一个层级结构的数据,类似于文件夹结构或者程序的菜单栏。

创建树形视图控件的方法如下:1)在资源视图中右击对应的对话框,选择“添加控件”;2)选择“树形视图”并将其拖动到对话框上;3)设置树形视图的属性,如ID、尺寸等;4)使用CTreeCtrl的成员函数添加、删除、修改树节点。

6. List控件(CListCtrl):1)在资源视图中右击对应的对话框,选择“添加控件”;2)选择“List控件”并将其拖动到对话框上;3)设置List控件的属性,如ID、列数、尺寸等;以上是几种常用的MFC基本控件的使用方法,通过使用这些控件,可以轻松地创建出一个功能完善、交互友好的Windows应用程序。

MFC通用控件使用详解

MFC通用控件使用详解

MFC通用控件使用详解首先,我们需要在MFC应用程序中包含要使用的控件的头文件。

例如,要使用按钮控件,我们需要包含afxwin.h文件。

然后,在对话框资源中添加一个按钮控件,并给它一个唯一的ID值。

在OnInitDialog(函数中,我们可以使用以下代码获取按钮控件的指针并对其进行操作:```cppCButton* pButton = (CButton*)GetDlgItem(IDC_BUTTON1);``````cpppButton->SetWindowText(_T("Click Me"));```我们还可以使用以下代码来设置按钮的样式:```cpppButton->SetButtonStyle(BS_DEFPUSHBUTTON);```这将使按钮默认显示为按下按钮。

```cppCEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);``````cppCString strText;pEdit->GetWindowText(strText);``````cpppEdit->SetWindowText(_T("Hello World"));```对于列表框控件,我们可以使用以下代码获取列表框的指针:```cppCListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST1); ```然后,我们可以使用以下代码向列表框中添加项:```cpppListBox->AddString(_T("Item 1"));pListBox->AddString(_T("Item 2"));```我们还可以使用以下代码来获取列表框中选定项的索引:```cppint nIndex = pListBox->GetCurSel(;```此外,MFC通用控件还提供了进度条控件和组合框控件等功能。

实验名称MFC基本控件的使用

实验名称MFC基本控件的使用

1、实验名称:MFC基本控件的使用2、实验目的:掌握编辑框类及其方法,熟练掌握利用编辑框类开发基于MFC的应用程序的方法。

3、实验内容:使用MFC AppWizard创建如图一所示的基于对话窗的应用程序,实现算术加、减、乘和除运算。

图一4、程序实现方法:(1)使用AppWizard建立应用程序框架①在进入Visual C++ 6.0的第一个界面下,选择MFC AppWizard(exe),在Project name 文本输入框中输入新建的项目名称“计数器”,并设置其所在位置,单击OK按钮,如图二所示。

图二Visual C++ 6.0的第一个界面②在MFC AppWizard的第一步中选择基本对话,如图三所示,其余的都采用默认选项。

图三MFC AppWizard的第一步界面这样就建立了一个基于对话框的程序,如图四所示。

图四基于对话框的界面(2)利用资源编辑器建立对话框在图四的Resource View选项卡中打开Dialog资源组,本程序的工程文件名为计数器,因此,系统自动产生一个名为IDD_MY_DIALOG的资源文件,双击IDD_ MY_DIALOG,在右边的窗口中显示出待编辑的对话框。

根据如图一所示的样式,利用Visual C++ 6.0的控键(Controls)建立对话框。

下面以“数据1”编辑框和“+”按钮为例介绍控件的创建过程,其他编辑框和按钮的创建可参照此操作:①在图四中Controls的“编辑框”按钮上单击鼠标左键、在如图一所示的对话框编辑窗口上的“数据1”编辑框的位置上,按下鼠标左键,并拖动鼠标画出一个大小合适的编辑框。

在编辑框上单击鼠标右键,在弹出的快捷莱单中选择Properties选项,此时弹出Edit Properties 属性设置对话框,如图五所示,在该对话框中输入ID属性。

图五Edit Properties对话框②在图四中Controls的“按钮”按钮上单击鼠标左键,在图一的“+”按钮的位置上,按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。

MFC控件使用详细教程

MFC控件使用详细教程

MFC控件使用详细教程MFC(Microsoft Foundation Class)是微软推出的一套用于开发Windows应用程序的类库。

它提供了许多方便易用的控件,可以快速创建用户界面。

本教程将详细介绍如何使用MFC控件来创建Windows应用程序。

第一步:创建一个MFC应用程序项目要使用MFC控件,首先需要创建一个MFC应用程序项目。

在Visual Studio中,选择"文件"->"新建"->"项目",然后选择"MFC应用程序"模板。

在项目设置中,可以选择使用对话框或视图来作为应用程序的主界面。

第二步:设置控件属性第三步:添加控件消息处理程序控件不仅仅可以显示在界面上,还可以响应用户的操作。

例如,当用户点击按钮时,可以执行一些特定的操作。

要实现这个功能,需要添加控件消息处理程序。

可以通过右键单击控件,选择"添加事件处理程序"来添加控件消息处理程序。

在生成事件处理程序的对话框中,可以选择控件的事件(如点击事件、鼠标移动事件等)和消息的处理函数。

在消息处理函数中,可以编写代码来实现特定的功能。

第四步:编写控件的功能代码在控件的消息处理函数中,可以使用MFC类库提供的函数来实现控件的功能。

例如,如果用户点击了按钮控件,可以使用CButton类的GetWindowText函数来获取按钮的文本,并使用CMessageBox类的MessageBox函数来显示一个消息框。

可以使用类似的方式来处理其他控件的事件。

例如,当用户选择了一个列表框中的项时,可以使用CListBox类的GetCurSel函数来获取选择的项的索引,并根据索引来执行特定的操作。

第五步:编译和运行应用程序完成了控件的添加和功能编写后,可以使用Visual Studio的编译和运行功能来编译和运行应用程序。

在编译过程中,会生成可执行文件和相关的依赖文件。

MFC_基本控件使用

MFC_基本控件使用

MFC_基本控件使用MFC(Microsoft Foundation Classes)是一个用于基于 Windows 的应用程序开发的C++类库。

它提供了一套基本控件,使开发人员可以轻松地创建 Windows 应用程序的用户界面。

MFC提供了多种基本控件,用于显示和输入数据、与用户交互。

以下是一些最常见的基本控件及其用法:1. Button(按钮)控件Button 控件用于触发特定的操作或执行特定的功能。

创建 Button 控件的方法如下:```CButton myButton;myButton.Create("Click Me", WS_CHILD , WS_VISIBLE ,BS_PUSHBUTTON, CRect(10, 10, 100, 30), pParentWnd, ID_MYBUTTON);```其中,"Click Me" 是按钮的显示文本,WS_CHILD , WS_VISIBLE ,BS_PUSHBUTTON 是按钮的样式。

CRect(10, 10, 100, 30) 是按钮的大小和位置,pParentWnd 是按钮的父窗口,ID_MYBUTTON 是按钮的标识符。

Edit Control 控件用于接收用户输入的文本数据。

创建 Edit Control 控件的方法如下:```CEdit myEdit;myEdit.Create(WS_CHILD , WS_VISIBLE , WS_BORDER, CRect(10, 50, 300, 70), pParentWnd, ID_MYEDIT);```3. List Box(列表框)控件List Box 控件用于显示一个垂直列表,可以包含多个项。

创建 List Box 控件的方法如下:```CListBox myList;myList.Create(WS_CHILD , WS_VISIBLE , WS_BORDER ,LBS_NOTIFY, CRect(10, 90, 200, 200), pParentWnd, ID_MYLIST);```其中,WS_CHILD , WS_VISIBLE , WS_BORDER , LBS_NOTIFY 是列表框的样式。

MFC控件使用说明书

MFC控件使用说明书

MFC控件使用说明书未央1117 2018-04-19 10:10:18VC++控件工具箱:2 按钮(Button):用来接收用户的命令,应用程序在接收到用户命令后,通常需要进行一些后台工作。

按钮可以响应单击或双击动作,在按钮接收到鼠标动作后,向其父窗口发送相应的控件通知,用户可以对这些控件通知进行消息映射,从而进行相应的处理。

在一个对话框中,可以定义一个默认按钮,这只要选中按钮属性中的“Default”选项。

如果在对话框活动的时候按下了Enter键,则等同于单击了默认按钮。

MFC提供了CButton类支持按钮控件。

3 复选框(Check Box):用来显示某种可能的选择,该项选择是独立的,用户可以选中或取消该选项。

在选项被选中的时候核选标记出现,选项被取消时核选标记消失。

MFC中由CButton类对核选框进行支持,用户可以通过SetCheck()函数和GetCheck()函数设置或获取核选框当前的状态。

[cpp]1.BST_UNCHECKED==((CButton*)GetDlgItem(IDC_CHECK_ RES1))->GetCheck()[cpp]1.((CButton*)GetDlgItem(IDC_CHECK_RES1))->SetCheck(true);4 编辑框(Edit Control):用来接收用户输入的字符串。

通过选择编辑框的选项,编辑框可以接收字符串、数字、密码等;编辑框还可以设置成接收多行字符串的模式;可以自动进行大小写转换。

编辑框可能向其父窗口发送多种控件通知,如果用户需要,可以对这些控件通知进行处理。

MFC提供了CEdit类支持编辑框控件。

[cpp]1.GetDlgItem(IDC_***)->SetWindowT ext(Cstring);2.GetDlgItem(IDC_***)->GetWindowText(Cstring);5 组合框(Combo Box):列表框和编辑框的组合,用户除了可以在列表中对已经存在的选项进行选择外,还可以输入新的选择。

MFC控件使用详细教程

MFC控件使用详细教程一、 Picture Control控件1、Picture Control控件功能简介Picture Control是Visual Basic提供的一种使用图像替换文本的控件,可以方便地将图像放入Visual Basic中,然后可以通过控件来显示图像,还可以处理图像的改变、放大、缩小等功能,可以很好地满足窗体应用程序中对图像处理的需求。

2、Picture Control控件实现步骤(1) 将Picture Control控件放入窗体中在Visual Basic的工具箱中,将Picture Control控件拖放放到工作表窗体中,即可实现Picture Control控件。

(2) 设置Picture Control控件设置Picture Control控件属性,包括Picture、BackStyle、BorderStyle等属性,将图像加入控件中,可以通过以下几种方式实现:a. 通过LoadPicture方法加载图像Picture1.LoadPicture("C:\MyDocuments\Pictures\MyPicture.bmp")b. 通过Picture属性加载图像Picture1.Picture=LoadPicture("C:\MyDocuments\Pictures\MyPict ure.bmp")(3) Picture Control控件的使用Picture Control控件最常用的是将图像放入控件中,通过设置Picture属性即可实现:Picture1.Picture=LoadPicture("C:\MyDocuments\Pictures\MyPict ure.bmp")Picture Control控件还可以处理图像的改变、放大、缩小等功能:'放大图像Picture1.Stretch = TruePicture1.Width = Picture1.Width * 2Picture1.Height = Picture1.Height * 2'缩小图像Picture1.Width = Picture1.Width / 2Picture1.Height = Picture1.Height / 2'改变图像Picture1.Picture =LoadPicture("C:\MyDocuments\Pictures\NewPicture.bmp")二、 Listbox Control控件1、Listbox Control控件功能简介Listbox Control是Visual Basic提供的一种使用列表显示内容的控件,可以将多个字符串文本放在一个列表中,用户可以在列表框中进行选择,进行操作,也可以设置列表框的属性。

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标准控件。

所涉及的内容包括各个控件的使用及相应的技巧。

C++MFC控件使用详解

1。

mfc单文档结构2。

添加左击鼠标,按下键盘事件3。

消息:窗口消息,控件的通知消息,命令消息第5章对话框和常用控件5.1对话框的使用5.2控件的创建和使用方法5.4通用对话框和消息对话框5.1对话框的使用5.1.1模式和无模式对话框模式对话框指当对话框被弹出,用户必须在对话框中作出相应的操作,在退出对话框之前,对话框所在的应用程序不能继续执行。

无模式对话框指当对话框被弹出后,一直保留在屏幕上,可继续在对话框所在的应用程序中进行其它操作;需要使用对话框时,单击对话框所在的区域即可激活。

在创建和退出对话框窗口时的方式不同:创建时,模式对话框由系统自动分配内存空间,对话框退出时,对话框对象自动删除。

无模式对话框需要来指定内存,退出时还需删除对话框对象。

退出时,两种对话框所使用的终止函数不一样。

模式对话框通过调用CDialog:: EndDialog来终止,无模式对话框则是调用CWnd::DestroyWindow来终止。

函数CDiaolog::OnOK 和CDiaolog::OnCancel 是调用EndDialog 的,因此无模式对话框必须用DestroyWindow来重载OnOK和OnCancel两个函数。

需要正确删除表示对话框的对象。

对模式对话框,在创建函数返回后即可删除对象。

无模式对话框不是同步的,在创建函数调用后立即返回,因而不知道何时删除对象,但可以通过重载CWnd::PostNcDestroy函数并执行清除操作。

5.1.2使用对话框编辑器打开对话框编辑器将项目工作区窗口切换到ResourceView页面,双击Dialog目录下任意一个对话框ID 或者,选择“Insert ”“Resource菜单命令(或按快捷键Ctrl+R),选择Dialog项,单击New 在对话框中添加和编辑控件(1)控件添加的方法在对话框中添加一个控件的方法有下列几种:在控件工具栏中单击某控件,鼠标箭头在对话框内变成十”字形状;在对话框指定位置单击鼠标左键,再拖动选择框可改变控件的大小和位置。

MFC中进度条控件的使用方法

MFC中进度条控件的使用方法MFC(Microsoft Foundation Class)进度条控件是一种用于显示任务进度的常见控件,可以在界面中显示一个动态的进度条,以便用户了解任务的进度情况。

在本文中,将介绍MFC中如何使用进度条控件,并详细说明其使用方法。

1.创建进度条控件在MFC应用程序的对话框资源中添加一个进度条控件,控件ID可以自定义。

然后在对应的对话框类中添加一个变量用于关联该控件,方法如下:```cpp#include <afxcmn.h> // 导入控件类的头文件class CMyDialog : public CDialogEx//...protected:CProgressCtrl m_progress; // 声明一个变量用于关联进度条控件};```2.初始化进度条在对话框类中的OnInitDialog(函数中,通过m_progress变量获取进度条控件的指针,并进行初始化设置。

```cppBOOL CMyDialog::OnInitDialogCDialogEx::OnInitDialog(;//获取进度条控件的指针CProgressCtrl* pProgress =(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);//设置进度条范围(默认为0-100)pProgress->SetRange(0, 100);//设置进度条初始位置pProgress->SetPos(0);return TRUE;}```3.更新进度条的进度在任务进行中,可以通过SetPos(函数设置进度条的当前位置,用以更新进度条的进度。

```cppvoid CMyDialog::DoTaskfor (int i = 0; i <= 100; i++)m_progress.SetPos(i);//执行任务代码...}}```4.设置进度条样式进度条控件还支持一些样式设置,可以通过SetStyle(函数进行设置。

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

使用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所示的对话框。

图6. 8 示例程序DialogDemo的运行结果在图6.8所示的文本框中输入一些字符,单击“确定”。

随即弹出如图6.9所示的消息框。

该消息框复述了用户在图6.8所示的对话框中的输入。

我们还发现,在图6.8所示的对话框中,当输入字符串达到一定的长度之后,我们不可以再输入更多的字符,这是我们在前面设置了Maximum characters为50的结果。

图6. 9 以消息框的形式反馈输入的字符串下面我们来看在上面的步骤中都完成了什么。

首先我们使用资源编辑器向对话框模板中添加这些标准控件,这一步的概念很清晰,因此并不难理解。

然后,我们打开了所绘制的编辑框的Properties (属性)对话框。

先将其控件ID 设置为IDC_EDIT。

这时如果打开头文件Resource.h,就会发现宏IDC_EDIT被定义为常量1001。

不过,事实上在很多情况下我们并不需要关心每一控件的ID的具体值,而只需要记住相应的助记符。

对于这里的编辑框控件,我们只需要记住IDC_EDIT即可,而不需要关心它等于1001。

接着,我们在Styles选项卡中设置了Multiline属性,同时清除了Auto HScroll属性,两者共同作用使用得编辑框IDC_EDIT支持多行文本,并且如文本行的长度超过编辑框宽度时自动回行。

下面的步骤是最重要的一步,我们动用了功能强大的工具ClassWizard。

首先,我们将编辑框与一个CString对象相关联,这使用了一种被称为Dialog Data Exchange (DDX)的机制。

在这种机制中,我们先在处理函数OnInitDialog或对话框类的构造函数中对对话框对象的成员变量进行初始化,在对话框显示之前,框架的DDX机制将成员变量的值传递给对话框中的控件。

这个过程在成员函数DoModal或Create被调用的过程中发生。

类CDialog中对OnInitDialog成员函数的默认实现调用了类CWnd成员函数UpdateData来初始化对话框中的控件。

这时我们就可以看到前面的第6步还可在具有下面的几种变通方案:1. 将代码行m_strEdit="您好! 请在这里输入一些字符串。

";移到对基类的OnInitDialog成员函数的调用之前,即位于下面的代码之前:CDialog::OnInitDialog();2. 将代码m_strEdit="您好! 请在这里输入一些字符串。

";移到类CDialogDemoDlg的构造函数中。

对于上面的两种方法,与前面第6步中使用的方法相比,我们没有必要调用类CWnd的成员函数UpdateData。

因为该函数在类CDialog的成员函数OnInitDialog中将被调用。

这三种方法之间并没有明确的优劣之分,在很多情况下,它们分别适用于不同的场合。

这里我们说一下成员函数UpdateData。

该函数带有一个布尔类型的参数,如果该参数为FALSE,函数UpdateData将成员变量的值传递给对话框的变量;而如果该参数为TRUE,函数UpdateData将进行相反的过程。

如果用户单击了对话框中ID为IDOK的按钮,或者以TRUE为参数调用函数UpdateData,DDX机制从控件中将值传递到成员变量,同时对话框数据验证(dialog data validation,DDV)机制根据设定的验证规则验证所有数据项。

在数据交换的过程中,成员函数UpdateData先创建一个CDataExchange对象,然后调用对话框对类CDialog成员函数DoDataExchange的重载版本。

该CDataExchange对象将作为成员函数DoDataExchange的一个参数,该参数定义了数据交换的上下文。

在DoDataExchange中,我们为每一个数据成员指定了一个对DDX函数的调用。

每一个函数定义了基于由成员函数UpdateData所提供的CDataExchange参数所确定的上下文而进行的双向数据交换。

下面的代码摘自实现文件DialogDemo.cpp中对函数DoDataExchange的定义:void CDialogDemoDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CDialogDemoDlg)DDX_Text(pDX, IDC_EDIT, m_strEdit);DDV_MaxChars(pDX, m_strEdit, 50);//}}AFX_DATA_MAP}在两行注释//{{AFX_DATA_MAP和//}}AFX_DATA_MAP之间的代码部分称作数据映射。

相关文档
最新文档