前往顾页
以后地位: 主页 > 收集编程 > .Net实例教程 >

MFC对话框编程要点年夜全

时候:2012-04-27 21:43来源:知行网www.zhixing123.cn 编辑:麦田守望者

1、对话框根基要点和生命周期
MFC对话框支撑“所见即所得”编程形式。其范例分为形式对话框和非形式对话框。
对话框由一个rc资本文件描述表面,经由过程ID与一个CPP类相连接,对话框内的控件利用基于ID的变量映照通信。
形式对话框工具被定义后,经由过程调用DoModal()函数来显现对话框并进行相关操纵,此函数当对话框被封闭时前往。其前往值标了然对话框是点“肯定”加入,还是“打消”。非形式对话框需求与某个View相关联,以便对话框加入时发送动静给对应的Vew进行需求的措置。
在对话框显现前,体系会调用OnInitDialog()函数,在这个函数中你可以设置一些控件属性,进行一些初始化事情。比如,设置动弹条的最年夜最小值,设置List列表的初始值等。其体例是将控件ID作为参数,调用GetDlgItem函数获得控件的工具的指针(指针范例是CWnd*),然后利用工具供应的函数进行操纵。
ID对一个组件来讲非常首要,经由过程领导,我们可以将一个变量和一个组件进行关联(映照)来实现数据互换,而这类绑定的关头就是将一个组件的ID与成员变量关联。

2、数据互换机制
UpdateData(BOOL b)函数可以进行变量和组件内容的互换,当UpdateData函数的参数为TRUE时,数据从对话框控件通报给数据成员;参数为FALSE时,数据从数据成员通报至对话框成员。数据互换的实现是经由过程CDialog::DoDataExchange函数。
当我们想改变获得得个别控件中的数据时,可利用GetDlgItem函数获得对应控件的指针,对指针进行操纵。

3、特别的Radio Button
Radio Button控件是分组的,同一组的Radio Button只能有一个被选中。这个机制的实现依靠于TAB依次,在资本视图下按Ctrl-D键将显现对话框的TAB核心依次。举一个例子来讲明:
Radio1、Radio2、Radio3是三个不合的Radio Button控件,其核心依次为1、2、3。为了实现分组Radio1的Group属性应当为TRUE,其他两个为FALSE。如果又有两个Radio4、Radio5核心依次为6、7。则Radio4的Group属性应为TRUE,Radio4,Radio5被分为一组。
需求重视的是,Radio以Group属性来分组,为告终束前一个组,你应当将核心依次为4、8的控件的Group属性设为TRUE,不然编译器会产生一个警告。

4、一些技能
经由过程领导,我们可以将一个类成员变量和控件关联以进行数据互换,比方将一个CString范例的变量和Edit控件关联。将一个int变量和一组Radio Button关联。但是,人总有错的时候,当我们点窜或需求删除这类关联时,费事就来了。
在我的利用VS2005过程中没有发明供应了删除“已被关联的控件成员变量”的领导,所以我利用的是比较费事的手动删除。
1)在对话框头文件中删除成员变量的定义
2)在对话框cpp文件中删除机关函数初始化列表中的对应变量的初始化
3)在对话框cpp文件中,按照变量名删除DoDataExchange函数中的对应语句
此时,以class view中的领导中,已可以从头设定控件所关联的成员变量了。

登录框的制作:
在显现主窗口之前显现一个形式对话框来提示用户登录一个常常利用的服从。只需求在PreCreateWindow函数中插手显现对话框的代码便可以完成这个服从。

有些时候,我们可能需求从一个控件工具来获得它的ID。比如,你的对话框中好几个动弹条,那么这些动弹条的事件都在OnHScroll,OnVScroll中被呼应。若何辨别是哪个动弹条就需求肯定ID。
在这两个函数中有一个CScrollBar *pScrollBar指针,我们可以经由过程调用pScrollBar->GetDlgCtrllD()来获得ID,ID是一个整数。

在对话框编程中常常需求改变某个控件的笔墨,比如EDIT控件和Static text控件。此时利用SetDlgItemText(int nID,LPCTSTR lpzString)函数比较便利。
 

顶一下
(1)
100%
踩一下
(0)
0%
------分开线----------------------------
标签(Tag):C# C#实例教程 c#根本教程 C#源代码 c#技能
------分开线----------------------------
颁发评论
请自发遵循互联网相关的政策法规,严禁公布色情、暴力、革命的谈吐。
评价:
神色:
考证码:点击我更换图片
猜你感兴趣