VC下制作一个类似于BCB的GroupBox的控件

这篇博客介绍了如何在VC++中通过扩展CButton类创建一个类似BCB和VB的GroupBox控件,实现子控件随GroupBox一起显示和隐藏。作者通过重载Create函数、添加CPtrArray来管理子控件,并覆盖ShowWindow函数,以控制所有子控件的可见性。文章提供了详细的代码示例并说明了在Windows XP和Visual C++ 6.0环境下已通过编译。
摘要由CSDN通过智能技术生成

      如果大家用过其它一些面向对象的高级语言(如:BCB 、 DELPHI 、 VB 等)可能会用到里面的GroupBox控件或者Panel控件,只要将其它控件拖入这两个控件里面,可以控件一起显示、一起隐藏等功能。VC没有提供Panel控件,但提供了一个GroupBox控件,而且这个控件只是一个简单的边框而已,无法做到里面的控件同时显示,同时隐藏的效果。

      一次我在做一个程序时要用到Panel,VC中没有,只好用GroupBox代替,但我发现了上述问题。于是我想到了控件的SetParent()函数,使用这个函数确实可以达到其它控件随GroupBox同时显示或隐藏,但同时也出现了一系列新的问题,最显著的问题就是使用了SetParent()函数后,控件无法执行原来的成员函数。后来我想到一个新的办法:写一个GroupBox的扩展类,用CPtrArray数组管理所有所需的控件。好,不多说,现在开始

 


 

 

  1. 新建一个基于对话框的程序。新建一个类,类名为 CGroupBoxEx ,基类为CButton
  2. 重载 CGroupBoxEx 类的 Create 函数 ,函数代码如下: 重载 Create 函数只是为了以后方便创建控件,可以改其中的参数
  3. 在 CGroupBoxEx 类中添加私有变量或者保护变量 m_ChildList ,类型为 CPtrArray ,用于管理子控件
  4. 添加公有函数 用于添加子控件的指针到 m_ChildList 中 
  5. 重载 CGroupBoxEx 类的 ShowWindow 函数  
  6. 到此已经完成了,当然还要在 CGroupBoxEx 类中的析构函数中释放数组 

现在 CGroupBoxEx 已经完成了,在对话框中随便添加几个控件,和两个按钮控件,并在对话框类中添加变量 CGroupBoxEx *pGroup;

在对话框初始化函数中添加以下代码 

然后在其它两个按钮控件中分别加上

1.pCroup->ShowWindow(SW_SHOW);    // 显示

2.pCroup->ShowWindow(SW_HIDE);    // 隐藏

运行看看,怎么样?

大家还可以再扩展一下类,添加自己所需要的代码。

 

以上代码在 Windows XP Professional SP3 + Visual C++ 6.0 下编译通过源码我就不打包上传了

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值