孙鑫VC++对话框笔记1
对话框笔记:
A、
1、建立单文档程序,再插入对话框。
也可以使用工具栏来新建。
对话框对应的类Cdialog.在屏幕上显示一个对话框。
对话框分模态对话框和非模态对话框。前者在应用程序能够执行之前必须被关闭掉,后者允许我们在显示对话框时可以执行其他程序。
新建一个类与对话框相对应。
选择:
弹出如下对话框:
点击OK,创建一个新类。(也可以在对话框资源上双击鼠标左键弹出)
输入类名:
可以点击上图中Change改变文件名。点击OK。
点击OK.会在ClassView中看到新建的CTestDlg类。
此类中有两个方法,第一个为构造函数:
调用基类的构造函数,传递CTestDlg类中IDD成员。
IDD成员为插入的对话框的ID号。
第二个函数完成对话框数据的交换和校验的:
2、下面创建一个对话框的窗口,可以在菜单中去增加一个菜单项。
设置如下:
在对话框上点击右键选择:
选择对菜单项的响应在View类完成:
点击添加函数,编辑代码。得如下:
先进行模态对话框的创建,入代码:
非模态对话框的创建:
本例选择模态对话框,首先在对话框上添加一个按钮,右击选属性:
响应Add按钮,右键:
设置如下,类选为与对话框关联的CTestDlg类:
点击添加函数,编辑代码:
响应Btn按钮右击CTestDlg类选择增加成员变量:
设置如下:
添加代码:
运行点击Add按钮,会弹出维新按钮:
再次点击会弹出一个非法的操作。
要判断,Btn不能重复创建。添加一个Bool类型的成员变量:
将此变量初始化为FALSE,:
编辑代码:
此时再次点击Add按钮,新产生的“维新”按钮会消失。
或者改为如下代码:
添加按钮:
3、下面实现对静态文本框的按键响应:(点击Number1,静态文本会变为中文“变
量1”) 先改变静态文本的ID号。
右击Number1,选择:
此时可以看到IDC_NUMBER1.:
选择增加函数,编辑代码有:
编辑代码:
在运行之前要改变静态文本按钮的属性类型:
在Notify前打钩。运行点击文本内容会改变:
再点击会变回来。
B、下面实现两个数的加法运算,
1、第一种方式:
在OnBtnAdd函数中编辑代码(函数的代码都注释起来):
运行,得如下:
2、第二种方式,编辑代码
3、第三种方式:
此段代码可以进行有符号数运算。
4、第四种方式:
可以使编辑框关联成员变量,用此成员变量来操作编辑框上面的数据。 选择
View、
ClassWizard.:
如上图,选择增加变量,输入成员变量名,选择类型:
依次EDIT2、EDIT3。
添加代码:
(第一个UpdateData刷新获取编辑框1、2的值,第二个UpdateData刷新传递
编辑框3的值。也可以设定编辑框输入值的范围。)
以上为四种实现方式。
*也可以使每一编辑框关联一个控件变量,代表控件本身:
对第一个控件增加变量:
点击OK,依次EDIT2、EDIT3。
可以看到增加了三个控件变量。
5、第五种方式:
添加代码:
如上,可以调用成员函数来实现。
6、第六种方式:
也可用如下代码实现:
7、第七种方式:
也可以EM_GETSEL获取复选的编辑框的内容,而不是编辑框的所有内容。EM_SETSEL设置复选的开始位置、结束位置。
在以上代码中添加后两行代码:
运行,可以看到辅选的内容。如下:
要全部复选上可以设置参数:
运行如下:
以上是七种访问控件的方式。
总结如下:
->Get(Set)WindowText()
将控件和整型变量相关联 将控件和控件变量相关联 SendMessage()
SendDlgItemMessage()
最常见的为第一、第四种。第七种用的最少。
C、实现对话框的扩展与收缩功能。
1、首先在对话框上增加一个按键,改变属性:
控件文本的改变(点击收缩,再点击扩展),添加响应函数,在按钮上双击鼠标左键。
点击OK。增加了对按钮点击进行响应的函数。
添加代码实现收缩、扩展变换:
运行可以实现。
2、在对话框上增加一个分隔符,用以表示切割的部分,可以用图像控件添加。
改变属性:
运行可以看到画线:
在以上代码后接着以下代码:
3、可以隐藏掉分隔符
把属性中Visible取消:
再运行就没有分隔符。
D、实现按下回车键使输入焦点从一个编辑框移动到下一个编辑框。
1、当焦点在编辑框内时,按下回车键对话框就关闭了。因为OK按钮为缺省按钮。在属性中可以看到Ddfault Button被选上。
作为一个缺省按钮,当按下键盘上回车键时,就会由个缺省按钮的响应函数对回车键进行响应。在基类的OnOk函数就是让对话框关闭。
可以在子类中覆盖基类中的OnOk函数,双击OK按钮:
点击OK,添加函数如下:
函数是调用基类的OnOk函数。
把用基类OnOk函数注释掉。运行按回车键就不会关闭对话框。
2、在CTestDlg类中添加消息处理:
WM_INITDIALOG消息是当对话框创建完成和其上面的子控件创建完成之后,当这个对话框要显示之前发送的一个消息。
找到WM_INITDIALOG,点击增加处理:
点击Edit Existing,得:
先定义一个窗口过程类型,名为prevProc(先前的窗口过程),再实现。 添加代
码如下:
接下来要写新的窗口过程, 在和中插入代码:
在
如下:
后添加return 1;
改变编辑框的属性,选择多行:
运行,按回车就会使焦点从第一个编辑框移到第二个编辑框。
3、也可用GetWindow函数实现,修改语句:
运行,按回车就会使焦点从第一个编辑框移到第二个编辑框。
也可用函数GetNextDlgTabTtem函数实现,修改语句:
4、要让焦点依次往下移动,以上方法很不方便,下面利用缺省按钮响应函数来实现,因为一旦我们在编辑框中按回车键,将由缺省按钮的响应函数来完成,那么我们可以在这个响应函数当中将焦点依次往下传递。
下面先将Edit1属性的多行去掉:
在OnOk函数中添加代码:
此时也只能把光标从第一个编辑框移动到第二个编辑框。
修改代码:
运行,可以移动焦点,但移到最后一个按钮就会出现错误:
到最后一个窗口时就不会得到下一个窗口。
再次修改代码:
此函数会使焦点在对话框中的按钮中循环移动(按照按钮顺序): 顺序可点击如下查看:
点击可以改变序号。
回车键由缺省按钮函数响应。
本文档为【孙鑫VC++对话框笔记1】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。