手掌心钢琴谱简谱:MFC 对话框编程要点 - lesky的专栏 - CSDNBlog
来源:百度文库 编辑:偶看新闻 时间:2024/05/10 21:40:38
MFC 对话框编程要点 (一)对话框基本要点和生命周期 MFC对话框支持WYSIWYG编程模式,即What you see is what you get.。其类型分为模式对话框和非模式对话框 对话框由一个rc资源文件描述外观;与一个cpp类相连接(通过ID);对话框内的控件使用基于ID的变量映射来通讯。 模式对话框对象被定义后,通过调用DoModal()函数来显示对话框并进行相关操作,此函数当对话框被关闭时返回。其返回值标明了对话框是点击OK退出(1),还是被Cancel(2)。 非模式对话框需要与某个View相关联,以便对话框退出时发送消息给对应的View进行必要的处理。 在对话框显示前,系统会调用OnInitDialog()函数,在这个函数中你可以设置一些控件属性,进行一些初始化工作。比如,设置滚动条的最大最小值,设置List列表的初始值等。其方法是将控件ID作为参数,调用GetDlgItem函数获得控件的对象的指针(指针类型是CWnd*)然后使用对象提供的函数进行操作。 ID对于一个组件来说非常重要,通过向导,我们可以将一个变量和一个组件进行关联(映射)来实现数据交换,而这种绑定的关键就是将一个组件的ID与成员变量关联。 (二)数据交换机制 UpdateData(BOOL b)函数可以进行变量和组件内容的交换,当UpdateData函数的参数为TRUE时,数据从对话框控件传递给数据成员;参数为FALSE时,数据从数据成员传递至对话框成员。数据交换的实现是通过调用 CDialog::DoDataExchange函数。 当我们想改变获得到个别控件中的数据时,可以使用GetDlgItem函数得到对应控件的指针,对指针进行操作。 (三)特殊的Radio Button Radio Button控件是分组的,同一组的Radio Button只能有一个被选中。这个机制的实现依赖于TAB顺序,在资源视图下按Ctrl-D键将显示对话框的TAB焦点顺序。举一个例子来说明: Radio1,Radio2,Radio3是三个不同的RadioButton控件,其焦点顺序为1,2,3。为了实现分组Radio1的Group属性应该为TRUE,其余两个为FALSE。如果又有两个Radio4,Radio5焦点顺序为6,7。则Radio4的Group属性应为TRUE,Radio4,Radio5被分为一组。 需要注意的是,Radio以Group属性来分组,为了结束前一个组,你应该将焦点顺序为4,8的控件的Group属性设为TRUE,否则编译器会产生一个警告。 (四)一些技巧 通过向导,我们可以将一个类成员变量和控件关联以进行数据交换,例如将一个CString类型的变量和Edit控件关联。将一个int变量和一组Radio Button关联。但是,人总有犯错的时候,当我们修改或需要删除这种关联时,麻烦就来了。 在我的使用过程中没有发现VS2005提供了删除“已被关联的控件成员变量”的向导,所以我使用的是比较麻烦的手动删除。1、 在对话框头文件中删除成员变量的定义2、 在对话框cpp文件中删除构造函数初始化列表中的对应变量的初始化3、 在对话框cpp文件中删除DoDataExchange函数中的对应语句(根据变量名)此时,在class view中的向导中,已经可以重新设定控件所关联的成员变量了。 登录框的制作: 在显示主窗口之前显示一个模式对话框来提示用户登录是一个常用的功能。只需要在PreCreateWindow函数中加入显示对话框的代码就可以完成这个功能。 有些时候,我们可能需要从一个控件对象来得到它的ID。比如,你的对话框中有好几个滚动条,那么这些滚动条的事件都在OnHScroll ,OnVScroll中被响应。如何区分是哪个滚动条就需要确定ID。 在这两个函数的参数中有一个CScrollBar* pScrollBar指针,我们可以通过调用pScrollBar->GetDlgCtrlID()来获得ID,ID是一个整数。 在对话框编程中往往需要改变某个控件的文字,比如Edit控件和static text控件。此时使用SetDlgItemText(int nID, LPCTSTR lpzString)函数比较方便。
MFC编程问题。如何在把图片作为对话框的背景??
有个“Demo MFC Aplication”的对话框
关于MFC编程的一个问题
会MFC编程的加我!!!
MFC 对话框问题!!
MFC编程中
MFC编程是什么
mfc 编程,高手进来!
关于 MFC 系统级模态对话框的问题!求解!
求救高手:怎样在VC++(MFC)的对话框中帖图?
如何用MFC设计多重对话框的用户界面?
求 C++ 界面编程教程,电子书,最好是非MFC的
MFC编程用ODBC连接多个表的问题
添加信息到MFC列表框的问题,网络编程
添加信息到MFC列表框的问题,网络编程
VC++的MFC编程中,寻某头文件
MFC对话框界面控制疑问
求VC++MFC编程源码
编程c的技巧和注意要点是什么?
VC++中基于对话框的编程。
编程实现对话框间的通信
我的电脑最近总是蹦出“DEMO MFC APPLICATION出现问题需要关闭”的对话框
基于对话框的MFC程序运行后接收到的第一个消息是什么?
vc的mfc中有无对话框能返回用户输入的字符串?