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

CCheckComboBox II

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.75/5 (8投票s)

2003年12月29日

CPOL

3分钟阅读

viewsIcon

127336

downloadIcon

5811

一个在每个项目旁边都有复选框的组合框。

Sample Image - CheckComboBox.png

引言

这个控件实际上是对 CCheckComboBox 类的修改,该类由 Magnus Egelberg, Lunalogik 编写。 Magnus 的控件几乎包含了我在 CheckComboBox 中寻找的所有功能,除了一个小特性。它不允许您在组合框的静态文本部分选中一个项目,您必须下拉列表框才能进行选择。这个类中的所有绘图代码都是由 Magnus 编写的。我唯一添加的是处理静态文本区域中复选框的代码,并且我删除了对项目数据依赖以存储项目的选中状态。它现在存储在 CByteArray 成员变量中。

用法

要使用该控件,您必须包含 CheckComboBox.h 头文件并将 CheckComboBox.cpp 文件添加到您的项目中。

如果在对话框中使用该控件,它必须具有 CBS_DROPDOWNLISTCBS_OWNERDRAWVARIABLE 组合框样式。

命令通知

除了组合框生成的常规 CBN_* 通知之外,每当用户更改复选框的选中状态时,CCheckComboBox 也会生成 BN_CLICKED 通知。您可以像处理按钮控件生成 BN_CLICKED 通知的方式完全相同的方式处理 BN_CLICKED 通知。使用 GetCurSel() 成员函数来获取生成 BN_CLICKED 通知的复选框的索引。

BEGIN_MESSAGE_MAP(CCCheckCombo_demoDlg, CDialog)
    // use the ON_BN_CLICKED macro to catch the BN_CLICKED
    // command that is generated by the CCheckComboBox
    ON_BN_CLICKED(IDC_COMBO1, OnCheckBox)
END_MESSAGE_MAP()
 
...
 
void CCCheckCombo_demoDlg::OnCheckBox()
{
    int sel = m_CheckCombo.GetCurSel();
    CString text;
    m_CheckCombo.GetLBText(sel, text);
    BOOL checked = m_CheckCombo.GetCheck(sel);
    TRACE(_T("Item %d (\"%s\") was %s \n"), sel, 
       text, checked ? _T("checked") : _T("unchecked"));
}

成员函数

这些是添加到 CCheckComboBox 的公共成员函数。也可以使用所有 CComboBox 成员函数。

  • BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID)

    使用此函数动态创建 CCheckComboBox 控件。所需的组合框样式会自动设置。

    返回值

    如果成功,则为非零值,否则为 0。

    参数

    dwStyle 控件的 WS_*CBS_* 样式。如果未指定 CBS_DROPDOWNLISTCBS_OWNERDRAWVARIABLE 样式,则会自动设置。
    rect CCheckComboBox 的位置和大小。
    pParentWnd 指定 CCheckComboBox 的父窗口(通常是 CDialog)。它不能为 NULL
    nID 指定 CCheckComboBox 的控件 ID。
  • BOOL GetCheck(int nIndex)

    使用此函数获取指定从零开始的索引处的复选框的选中状态。

    返回值

    如果选中复选框,则为 TRUE,否则为 FALSE

    参数

    nIndex 复选框的从零开始的索引
  • BOOL SetCheck(int nIndex, BOOL bCheck = TRUE)

    设置指定从零开始的索引处的复选框的选中状态。

    返回值

    先前的选中状态。如果选中复选框,则为 TRUE,否则为 FALSE

    参数

    nIndex 复选框的从零开始的索引
    bCheck 新的选中状态。 TRUE 用于选中复选框, FALSE 用于取消选中它。
  • void CheckAll(BOOL bCheck = TRUE)

    设置 CCheckComboBox 控件中所有复选框的选中状态。

    返回值

    没有返回值。

    参数

    bCheck 新的选中状态。 TRUE 用于选中复选框, FALSE 用于取消选中它们。
© . All rights reserved.