- 浏览: 17534 次
最新评论
MFC----对话框(一)
2011年03月14日
一.对话框的创建和显示
1.在MFC中,所有的控件类都是由CWnd类派生来的,因此,控件实际上也是窗口,实际上,控件通常是作为对话框的子窗口而创建的。
2.有两种类型的对话框:模态对话框和非模态对话框。
3.在MFC中,对资源的操作通常都是通过一个与资源相关的类来完成的。
4.创建模态对话框需要调用CDialog类的成员函数:DoModal,该函数的功能时创建并显示一个模态对话框。
例:CTestDlg dlg;
dlg.DoModal();
5.如果要创建非模态对话框,则需要利用CDialog类的Create成员函数。当利用Create函数创建非模态对话框时,还需要调用ShowWindow函数将这个对话框显示出来。在创建非模态对话框时,不能把对话框对象定义为局部对象。对于这个问题,有两种解决办法,一种就是把这个对话框对象定义为视类的成员变量;另一种方式就是将它定义为指针,在堆上分配内存。在堆上分配的内存,与程序的整个生命周期是一致的。
例:CTestDlg *pDlg=new CTestDlg();
pDlg->Create(IDD_DIALOG1,this);
pDlg->ShowWindow(SW_SHOW);
上面程序仍有问题,首先,定义的pDlg这个指针变量是一个局部对象,这样当它的生命周期结束时,它保存的内存地址就丢失了,那么在程序中也就无法再引用它所指向的那块内存了。这个问题的解决办法有两种:一是将这个指针变量定义为视类的成员变量,然后再视类的析构函数中调用delete函数来释放这个指针变量所指向的那块内存。二是在CTestDlg类中重载PostNcDestroy虚函数,释放this指针所指向的内存。
二.动态创建按钮
例:m_btn.Create();
m_btn.DestroyWindow();
三.控件的访问
逗号表达式的结果是最后一个表达式的返回值。
静态文本控件在默认状态下是不发送通告消息的,并不会选中Notify这个选项。为了使一个静态文本控件能够响应鼠标单击消息,那么需要进行两个特殊的步骤:第一步,改变它的ID;第二步,在它的属性对话框中选中Notify选项。
C语言提供了一个这样的转换函数:atoi,可以将一个由数字组成的字符串转换为相应的数值。还有另一个相反的函数:itoa()。
在DoDataExchage函数内部实现了对话框控件与类成员变量的关联。在程序代码中从来不直接调用这个函数,而是通过CWnd类的另一个成员函数UpDateData来调用。
MFC提供了多种以DDX_为前缀的函数,这些函数分别用于不同控件的数据交换。
MFC也提供了多个以DDV_为前缀的数据校验函数。
DDX――Dialog Data Exchage,对话框数据交换; DDV――Dialog Data Validation,对话框数据校验。
共有七种访问对话框控件的方式:
1.GetDlgItem()->Get(Set)WindowText()
2.GetDlgItemText()/SetDlgItemText()
3.GetDlgItemInt()/SetDlgItemInt()
4.将控件和整型变量相关联
5.将控件和控件变量相关联
6.SendMessage()
7.SendDlgItemMessage()
四.对话框伸缩功能的实现
CRect类有两个成员函数 可以用来判断一个矩形是否为空:IsRectEmpty(), IsRectNull()\
调用CWnd类的GetWindowRect可以获得对话框的位置。
利用SetWindowPos()函数来设置对话框的位置。
五.输入焦点的传递
在MFC中,默认情况下,当在对话框中按下回车键时,会选择对话框中默认按钮的消息响应函数来处理这一事件。
如果想要获得对话框中某个控件的下一个控件的句柄,可以调用GetNextWindow函数、GetWindow()、GetNextDlgTabItem(),最后一个函数是查找具有Tab stop属性的控件,并按Tab顺序依次查找各控件。
SetWindowLong函数可以修改窗口已指定的过程函数。
GetFocus()和SetFocus()
发表评论
-
flex 右下角弹出提示窗口
2012-01-20 01:29 1166flex 右下角弹出提示窗口 2011年05月13日 / ... -
Flex ant out of memory error.
2012-01-20 01:29 575Flex ant out of memory error. ... -
FLEX ComboBox绑定JAVA返回的数据源
2012-01-20 01:29 993FLEX ComboBox绑定JAVA返回的数据源 2010 ... -
flex 一个小panel
2012-01-20 01:29 643flex 一个小panel 2010年09月01日 -- ... -
Flex FlashPlayer插件非调试版本不报错问题处理
2012-01-20 01:29 735Flex FlashPlayer插件非调试版本不报错问题处理 ... -
建模工具13款
2012-01-19 09:19 895建模工具13款 2011年02月03日 13个优秀的UM ... -
Cassandra学习笔记
2012-01-19 09:19 1167Cassandra学习笔记 2011年11月16日 ... -
酷壳网陈皓:开发者实用学习资源汇总
2012-01-19 09:19 754酷壳网陈皓:开发者实用 ... -
stardict安装与优化详解
2012-01-19 09:19 848stardict安装与优化详解 2011年10月08日 ... -
使用hyk代理的XMPP模式和Seattle模式
2012-01-19 09:19 697使用hyk代理的XMPP模式和 ... -
vc++ 向其他进程注入代码的三种方法(转)
2012-01-17 01:52 1205vc++ 向其他进程注入代码的三种方法(转) 2010年06 ... -
Delphi 内存机制 调试教程
2012-01-17 01:52 1279Delphi 内存机制 调试教程 2011年10月21日 ... -
《塞尔达传说:天空之剑》模拟器更新操控优化
2012-01-17 01:52 1732《塞尔达传说:天空之剑》模拟器更新操控优化 2011年11月 ... -
让ps CS5运行速度更快的设置技巧(辑)
2012-01-17 01:52 814让ps CS5运行速度更快的 ... -
TWaver Flex会给电信软件开发带来变革吗?
2012-01-15 21:02 677TWaver Flex会给电信软件开发带来变革吗? 2010 ... -
一名优秀的Flex开发者需要知道的10样东西
2012-01-15 21:02 577一名优秀的Flex开发者需要知道的10样东西 2010年06 ... -
Flex开发相关优秀资源集合(全球)
2012-01-15 21:02 594Flex开发相关优秀资源集合(全球) 2010年01月02日 ... -
整合Flex和Java―配置篇(转)
2012-01-15 21:02 573整合Flex和Java―配置篇(转) 2009年11月04日 ... -
个人总结flex各种用法
2012-01-15 21:02 599个人总结flex各种用法 2009年11月03日 // ...
相关推荐
MFC 文件对话框-打开文件-保存文件MFC 文件对话框-打开文件-保存文件MFC 文件对话框-打开文件-保存文件 MFC 文件对话框-打开文件-保存文件MFC 文件对话框-打开文件-保存文件MFC 文件对话框-打开文件-保存文件 MFC ...
MFC函数----对话框[归类].pdf
MFC学生信息管理系统------基于对话框的C++编程 MFC学生信息管理系统------基于对话框的C++编程 MFC学生信息管理系统------基于对话框的C++编程 MFC学生信息管理系统------基于对话框的C++编程 MFC学生信息管理...
这是一个关于Visual C++ MFC 的对话框的函数。
该文档是关于MFC对话框编程的材料。文档中包括如何利用MFC 对话框进行编程,基于对话框编程的程序执行流程以及各种控件开发使用方法等。适合初学者使用
MFC 字体对话框完整工程演示代码下载 MFC_Font_Example MFC 字体对话框完整工程演示代码下载 MFC_Font_Example MFC 字体对话框完整工程演示代码下载 MFC_Font_Example MFC 字体对话框完整工程演示代码下载 MFC_...
MFC 颜色对话框 完整工程演示代码下载 MFC_Color_Example MFC 颜色对话框 完整工程演示代码下载 MFC_Color_Example MFC 颜色对话框 完整工程演示代码下载 MFC_Color_Example MFC 颜色对话框 完整工程演示代码...
本文章是关于MFC对话框-DoDataExchange()函数使用。
win7,vs2010平台下。改写由mfc向导生成的基于对话框的程序,将其改写为一个非模式对话框。
在ObjectARX中使用MFC-标签式对话框,对应于张帆书中的11.3节。
对话框和控件部分
OpengGL示例程序。对初学这非常有用的
Windows-MFC程序-08.MFC对话框
这是一个Windows程序设计的作业题目 通过MFC完成窗口的实现和其中一些对话框的实现。
mfc对话框程序退出弹出确认对话框,最简单的范例,没有多余代码,就是相应了ON_WM_CLOSE()消息
在MFC对话框中使用OpenGL编程
MFC中在一个对话框中弹出另一个对话框.pdfMFC中在一个对话框中弹出另一个对话框.pdfMFC中在一个对话框中弹出另一个对话框.pdfMFC中在一个对话框中弹出另一个对话框.pdfMFC中在一个对话框中弹出另一个对话框.pdfMFC中...
简洁实现 MFC对话框实现全屏,覆盖任务栏,更改对话框客户区颜色