65.9K
CodeProject 正在变化。 阅读更多。
Home

CGroupCheckBox 控件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.13/5 (7投票s)

2004年5月17日

2分钟阅读

viewsIcon

49279

downloadIcon

2345

一个完全自动化的分组框和复选框, 用于控制其周围控件的状态

引言

我需要一个组合的GroupBox和Checkbox控件。我希望GroupBox内的所有控件都根据与GroupBox关联的Checkbox的点击状态被启用/禁用。

背景

我直接开始编写。当我遇到困难时,我开始寻找是否有人尝试过这个。在研究了Ming Liu在他的文章“CGroupCheck - 与GroupBox关联的Checkbox”中的代码后,我解决了我的问题。我欠他一份感激之情,因为他为我铺平了道路,尽管我采用了不同的方法来解决这个问题。

使用代码

只需将一个GroupBox添加到你的对话框中,并为其分配一个ID(将默认ID IDC_STATIC 更改为其他ID)。将所有你希望它启用/禁用的控件放在GroupBox内。所有控件的客户端区域必须完全位于GroupBox内。使用类向导创建一个类型为CButton的成员变量。在头文件中将CButton更改为CGroupCheckBox

DDX_

CGroupCheckBox 还定义了一个自定义的 DDX_ 函数,void AFXAPI DDX_GroupCheck(CDataExchange* pDX, int nIDC, int& value),你可以将其添加到对话框的 DoDataExchange() 函数中。只需创建一个 public BOOL 变量,例如 m_bIgnore,并按如下操作

void CGroupCheckBoxDemoDlg::DoDataExchange(CDataExchange* pDX)

{
    CDialog::DoDataExchange(pDX);

    //{{AFX_DATA_MAP(CGroupCheckBoxDemoDlg)
    DDX_Control(pDX, IDC_GROUP2, m_ctlIgnore);
    //}}AFX_DATA_MAP



    DDX_GroupCheck(pDX, IDC_GROUP2, m_bIgnore);

}

样式

请注意,上述对话框包含两种样式的 CGroupCheckBox。标记为 Touch All 的控件会启用/禁用其所有包含的控件,并且默认情况下创建。另一个,标记为 Ignore Static IDs, 仅启用/禁用那些ID不是 IDC_STATIC 的控件。该样式通过调用成员函数 SetStyle()设置。

SetStyle() 是你唯一需要调用的函数,并且只需要在更改默认样式时才需要调用。来自上述应用程序的用法示例

BOOL CGroupCheckBoxDemoDlg::OnInitDialog()
{
    CDialog::OnInitDialog();

    // Change the CGroupCheckBox style from the default.
     m_ctlIgnore.SetStyle(CGroupCheckBox::TCH_IGNORE);

    return TRUE;
}

关注点

OGX 文件

我发现重用我的类最简单的方法是将它们添加到组件库。然后,这些类可以通过类向导供你使用。对于 CGroupCheckBox,你可以使用类向导创建这种类型的成员变量。演示程序还使用了我之前写过的一篇关于 CGlyphButton 的文章。它也作为 OGX 文件提供。

© . All rights reserved.