VC++基础控件案例图详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.简单MFC应用程序开发。
例1. 编写如下图的程序,若单击“复制”按钮,则把上面的编辑框中的内容复制到下面的编辑框中;若单击“结束”按钮,则退出程序的运行。
(1)工程创建
①选择“文件|新建”命令;
②在“工程”选项卡中,选定“MFC App Wizard(exe),输入工程名称TEST,单击“确定”按钮;
③选定“D基本对话框”即创建基于对话框的应用程序,单击“完成”按钮。
(2)放置控件,先删除原有的控件,然后放置本例需要的控件,本例共涉及4个控件:2个编辑框和2个命令按钮。编辑框主要用来输入数据,也可以用来显示数据;命令按钮用来执行有关操作。
(3)设置控件的属性,控件添加后就要设置其有关的属性。
上编辑框的属性设置:选定“Multiline”复选框,编辑框中可以输入多行文本;选定“Vertical scroll和Auto VScroll,编辑框将有垂直滚动条;选定“Want Return”。
下编辑框的属性设置同上编辑框,但可不选定“Want Return”。
(4)连接变量,为控件连接变量就是为控件起一个名字。每一个控件都是一个对象,调用MFC类库中的函数都是通过对象来实现的。编辑框属于CEdit类,一个具体的编辑框就是一个CEdit类的对象,如上IDC_EDIT1和IDC_EDIT2。这些对象必须有名称才能对它们进行操作,所以要给每一个对象连接一个变量,作为对象的名称。这个变量将成为类中的一个数据成员。
现在为IDC_EDIT1连接一个变量m_e1。
①在IDC_EDIT1编辑框中右击鼠标出现快捷菜单选择“建立类向导”,如下图所示。
②在上图中选择“创建类向导”后,弹出如下图所示的MFC ClassWizard对话框,在“Member Variables”中,选定“IDC_EDIT1”,再选择“Add Variable”按钮。
③出现下图所示的Add Member Variable对话框中输入以下的数据:Member Variable name(成员变量名):m_e1;
Category(类别):Control;
Variable type(类型):CEdit。
用同样的方法为IDC_EDIT2连接一个变量m_e2,结果如下图所示。
(5)添加并且编写消息处理函数,在建立了对话框(用户操作界面)、设置控件属性和连接变量后,就要考虑为哪些控件编写什么样的消息处理函数了。
本例要求单击“复制”按钮后,编辑框中的内容复制到下面的编辑框中。也就是说,在程序运行时,在“复制”按钮上发生单击事件后,Windows向对话框发出了一个BN_CLICKED 消息,CTESTDlg类应有一个处理该消息的函数。
添加和编写这个消息处理函数的过程是:
①双击“复选”按钮,弹出如下图所示的“Add Member Function”对话框,输入函数名(缺省函数名为OnButton1),单击“确定”按钮后,添加了一个空函数。
另一个方法是在“MFC ClassWizard”对话框“Message Maps”选项卡中,选定IDC_BUTTON1和BN_CLICKED消息,如图所示,然后单击“Add Function”按钮即可。
再单击Edit Code按钮,出现如下消息处理函数。
为消息处理函数void CTESTDlg::OnButton1()和void CTESTDlg::OnButton2()分别添加代码如下图所示。
二.静态文本框、命令按钮和编辑框的使用
静态文本框,是最简单的控件,它主要用来显示文本信息,不能接受用户输入,一般不需要连接变量,也不需要处理消息。
命令按钮,是最常见的、应用最广泛的一种控件。在程序执行期间,若单击某个命令按钮,则执行相应的消息处理函数。命令按钮的主要属性是标题属性,该属性用来设置命令按钮上显示的文本。命令按钮一般不需要连接变量。命令按钮能处理BN_CLICKED消息。
编辑框,是一个文本编辑区域,用户可以在该区域输入、编辑和显示正文内容。由于编辑框内置了一定的编辑功能,如剪切、复制、粘贴、撤销等功能,一般不需要对它进行编程。(1)属性设置,编辑框的重要属性(样式style选项卡中)设置:
Multiline,定义该编辑框为多行文本框;Number,限定输入的字符只能是数字字符;Boder 为控件创建边界;Read-only,编辑框成为只读的,禁止用户编辑修改。
成员函数功能应用示例
SetSel(n,m) 选定编辑框中从第n个字符到第m个字符的内
容。SetSel(0,-1)的作用是选定所有的内容
m_e.SetSel(0,-1);
Copy() 将编辑框中当前选定的内容复制到剪切板m_e.Copy();
Cut() 将编辑框中当前选定的内容剪切到剪切板m_e.Cut();
Clear() 删除编辑框中当前选定的内容m_e.Clear();
Paste() 把剪贴板中内容粘贴到编辑框中光标所在位置m_e.Paste();
GetLine(n,ch) 将多行编辑框中第n行的内容复制到ch中,ch
一般为字符数组char ch[80];
m_e.GetLine(0,ch);
ReplaceSel(ch) 将ch中内容替换编辑框中选定的内容char ch[80]=”abcd”;
m_e.ReplaceSel(ch);
Undo() 撤销对编辑框的最后一次操作m_e.Undo();
由于CEdit是从CWnd类直接派生来的,所以编辑框可以使用CWnd类的成员函数。CWnd 类的重要成员函数有:
①获取编辑框中内容:GetWindowText(CString &rString) const;将编辑框中内容复制到CString类对象rString中。
例如,将编辑框m_e中内容复制到CString类对象ch中:
CString ch;
m_e.GetWindowText(ch);
例如,将编辑框m_e中内容复制到字符数组ch中:
char ch[80];
m_e.GetWindowText(ch,80);
②设置编辑框中内容:void SetWindowText(LPCTSTR lpszString);将lpszString中内容替换编辑框中原有内容,lpszString是字符数组或字符串指针。
例如:设置编辑框中的内容为“abcdefg”:
char ch[20]=”abcdefg”;
m_e.SetWindowText(ch);
(3)连接变量
编辑框在连接变量时,除了要指定变量名之外,还要确定变量类别。变量类别有两个可选择:Control是指该变量作控件使用,对应的变量类型只能是Cedit,可以使用该控件类的成员函数;Value,是指该变量作C/C++中普通的变量使用,对应的变量类型有CString、int、double等。如下图所示。
注意:如果一个编辑框连接了一个Value类别的变量,则该变量就表示这个编辑框,编辑框中显示的内容就是变量的值。但是,改变了编辑框的内容并不会自动更新对应的变量的值,同样改变了变量的值也不会自动刷新编辑框的内容。若要保持一致,需要使用UpdateData()函数更新:若编辑框的内容改变了,则应使用语句UpdateData(TRUE);更新对应的变量的值;若变量的值改变了,则应使用语句UpdateData(FALSE);刷新编辑框的内容。