- 浏览: 16366 次
最新评论
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实现FTP文件上传功能
2012-01-20 01:27 691使用Flex实现FTP文件上传功能 2011年04月12日 ... -
The architecture of Flex and Java applications two (Flex 和 Java 应用程序架构 2)
2012-01-20 01:27 524The architecture of Flex and Ja ... -
flex 打印 预览
2012-01-20 01:27 745flex 打印 预览 2011年03 ... -
在Flex Mobile中构建“本地”菜单
2012-01-20 01:27 893在Flex Mobile中构建“本地”菜单 2010年12月 ... -
Flex4中 一个使用Module的例子
2012-01-20 01:27 1048Flex4中 一个使用Module的例子 2011年02月2 ... -
python 常用类库!(转)
2012-01-19 09:17 2348python 常用类库!(转) 2011年01月21日 ... -
2011-10-10program
2012-01-19 09:17 6492011-10-10program 2011年10月10日 ... -
MFC对话框程序基础复习001
2012-01-19 09:17 681MFC对话框程序基础复习001 2011年04月23日 ... -
vc++ 向其他进程注入代码的三种方法(转)
2012-01-19 09:17 957vc++ 向其他进程注入代码的三种方法(转) 2010年06 ... -
PRO/E配置文件选项
2012-01-17 01:50 837PRO/E配置文件选项 2010年08月08日 PRO/ ... -
一些工具集合
2012-01-17 01:50 729一些工具集合 2010年11月13日 【显示工具】 ... -
qt中文
2012-01-17 01:50 773qt中文 2011年06月09日 QDataStream ... -
装机必备检测软件全集
2012-01-17 01:50 797装机必备检测软件全集 ... -
3D MAX 常见小问题集合三
2012-01-17 01:50 7513D MAX 常见小问题集合三 ... -
FLEX做的网站
2012-01-15 21:01 625FLEX做的网站 2011年05月1 ... -
Flex开源项目网址列表
2012-01-15 21:01 713Flex开源项目网址列表 2011年06月19日 1. ... -
FLEX地图应用教程之一
2012-01-15 21:01 518FLEX地图应用教程之一 2 ... -
flex类网站收集
2012-01-15 21:01 534flex类网站收集 2010年10月22日 1. Fle ... -
用flex开发 google map应用程式
2012-01-15 21:01 759用flex开发 google map应用程式 2009年09 ...
相关推荐
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对话框与静态HTML交互,关于MFC如何与WebBrowser加载的HTML进行交互的问题。。