• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

对话框中对成批控件的操作

发布: 2007-7-01 20:40 | 作者: admin | 来源: | 查看: 35次 | 进入软件测试论坛讨论

领测软件测试网

在使用VC/MFC编程时常碰到要对多个控件同时做同样的操作的情况,特别是你想使某些控件同时禁用或同时隐藏某些控件等。这时你一般可以有如下选择:

1.     你可以给每个控件映射控制类型的变量,然后逐个对它们进行操作,这显然会在对话框类实例化时多占用用来存放成员变量的内存;

2.     你也可以通过GetDlgItem函数得到来得到控件的窗体指针来逐个操作,而这除了占用指针内存外,遇到太多的控件时无疑会使代码量增加;

3.     你可采用指针数组来记录所有的控件,一般先要进行一个初始化动作在动话框开始显示时记录下要操作的控件,然后去对其操作。这种办法除了指针空间外,遇到不同类型的要进行太多的类型转化。

4.     当然,你要像VB那样使用控件数组的话在VC中也是可以通过映射控件的控制类型变量来实现的,但主要是它除了占用空间外还不太适合于不同类型的控件。

这里介绍的是如果使用对话框类自带的两个成员函数来实现这种操作,它们是:

l         得到“下一个”TAB项控件

l         得到一组控件中的“下一个”

注意:

1.              这里的“下一个”都是相对的,你可以通过它们的参数让它变成“上一个”;

2.              在使用前者是要注意要操作控件的“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类的成员,对于非对话框上的控件或者动态创建的控件同样有效。


延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网