对话框中对成批控件的操作
来源:互联网 发布:otsu算法阈值分割原理 编辑:程序博客网 时间:2024/04/28 05:35
在使用VC/MFC编程时常碰到要对多个控件同时做同样的操作的情况,特别是你想使某些控件同时禁用或同时隐藏某些控件等。这时你一般可以有如下选择:
1. 你可以给每个控件映射控制类型的变量,然后逐个对它们进行操作,这显然会在对话框类实例化时多占用用来存放成员变量的内存;
2. 你也可以通过GetDlgItem函数得到来得到控件的窗体指针来逐个操作,而这除了占用指针内存外,遇到太多的控件时无疑会使代码量增加;
3. 你可采用指针数组来记录所有的控件,一般先要进行一个初始化动作在动话框开始显示时记录下要操作的控件,然后去对其操作。这种办法除了指针空间外,遇到不同类型的要进行太多的类型转化。
4. 当然,你要像VB那样使用控件数组的话在VC中也是可以通过映射控件的控制类型变量来实现的,但主要是它除了占用空间外还不太适合于不同类型的控件。
这里介绍的是如果使用对话框类自带的两个成员函数来实现这种操作,它们是:
l CWnd::GetNextDlgTabItem得到“下一个”TAB项控件
l CWnd::GetNextDlgGroupItem得到一组控件中的“下一个”
注意:
1. 这里的“下一个”都是相对的,你可以通过它们的参数让它变成“上一个”;
2. 在使用前者是要注意要操作控件的“TabStop”属性必须打上钩或者它要有WS_TABSTOP风格;
3. 使用后一个函数要使要操作的控件在一组,方法是在第一个控件的Group属性上打钩,后面的不打钩;
4. 当一批控件被Enable(false)(即Disable禁用后)下次就使用上述两个函数就不算在内了,所以要再次使用即恢复它们的话必须另外记下它们的指针;
5. 关于上面的两个函数的详细说明请参MSDN。
下面是一个应用它们的调用例子:
CWnd * pWndCtrl = GetDlgItem(IDC_STATIC1);
for(i=0;i < 11 && pWndCtrl != NULL;i++)
{
pWndCtrl->EnableWindow(FALSE);
pWndCtrl = GetNextDlgTabItem(pWndCtrl);
}
上面的代码将同时禁用11个控件,将GetNextDlgTabItem换成GetNextDlgGroupItem的话就是对一组控件进行操作啦。
当然,因为这两个函数是CWnd类的成员,对于非对话框上的控件或者动态创建的控件同样有效。
- 对话框中对成批控件的操作
- VC++对成批控件进行操作
- 对对话框的控件绘图
- jQuery中对 input 控件的操作
- IOS中对控件的操作
- 对话框控件的一些操作
- vc 中对对话框的几种操作
- VC++中对对话框中控件的控制的一种实现方法(适合初学者看)
- 金格office控件在js中对vba的操作
- 如何操作本对话框之外的对话框上的控件
- c#中对话框的操作
- MFC中对话框的操作
- MFC中对话框的操作
- 在VS2010/MFC中如何对对话框添加控件
- 关于在进程中对对话框或者视图操作,出现读写错误0x000000的解决办法
- 在 Java2中,有一套设计优良的接口和类组成了Java集合框架Collection,使程序员操作成批的数据或对象元素极为方便。这些接口和类有很多对抽象数据类型操作的API,而这是我们常用的且在数据结
- 对话框中控件的WM_KEYDOWN消息处理
- VC中对话框的“所有”控件?
- 窗体控件大小随窗体大小变化而变化
- 基于MATLAB C/C++数学函数库开发应用程序
- 使用VC和MATCOM结合开发应用程序心得笔记
- 回调函数快速使用
- 经历Origin
- 对话框中对成批控件的操作
- 基于MFC文档/视/框架程序之利剑
- C++关键字(static/register/atuo/extern/volatile/const)释疑
- InstallShield6.3安装文件制作要点
- GeoTiff探索成果总结
- 在C++中创建持久对象
- XML Web Service介绍
- XML Web Services 底层结构
- 遍历FTP下目录和文件生成数据库--可以做小规模的FTP搜索引擎