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

按钮组控件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.69/5 (9投票s)

2001年5月7日

3分钟阅读

viewsIcon

94781

downloadIcon

2116

一篇展示按钮组控件的文章,用于创建类似 Visual Studio 选项对话框中看到的工具栏类型组。

Demo dialog without border around control Demo dialog with border around control

引言

这个控件是一个静态控件,用于创建一个类似于 Visual Studio 中的简化工具栏。正如演示应用程序所展示的(以及上面的图片),该控件在静态控件中创建一系列按钮。 这些按钮可以启用或禁用,并且该控件可以绘制带或不带静态边缘。

使用控件

将此控件放入您的项目中非常容易。这是一个例子

  1. 将文件 btnST.cpp, btnST.h, ButtonGroupCtl.cppButtonGroupCtl.h 添加到您的项目中。 这些文件可以在源代码下载中找到。
  2. 创建或打开您要添加按钮组的对话框资源。
  3. 插入一个带有适当文本的静态控件(在演示示例中是“Options”)。 如果您希望组周围有边框,请设置“Static Edge”标志

    Dialog resource editor

  4. 在对话框类的 ClassWizard 中,创建一个链接到控件的成员变量,并选择 CButtonGroupCtl

    Adding a member variable

    如果未显示,请选择 CStatic,然后编辑您的类定义以使用 CButtonGroupCtl 代替。

    同样在您的类定义中,添加以下行

    #include "ButtonGroupCtl.h"
    

  5. 向您的类添加一个 CImageList 变量,并在您的对话框类的构造函数中初始化它。 有关示例,请参见演示项目。
  6. 要向控件添加按钮,请在构造函数中使用 AddButton 函数

    void AddButton(int nID, int nImage, LPCTSTR pszToolTip)
    

    nID 是您要添加的控件的 ID,例如 IDC_NEW
    nImage 是您希望使用的 ImageList 中图像的索引。
    pszToolTip 是您希望用于控件的工具提示。 您可以将其留空。

    请注意,一旦控件被子类化后,您就无法添加或删除按钮 - 它并非旨在替代工具栏控件。

  7. 现在,为您的对话框类中的按钮添加消息处理程序。 您必须手动执行此操作,首先向您的类添加一个函数(例如 OnAdd()

    Adding a member function as a message hander

    然后,您应该在消息映射中添加一个条目,例如

    ON_BN_CLICKED(IDC_NEW, OnAddItem)
    

或者,您可以使用 EnableButton(nID, bEnable = true) 函数在运行时启用和禁用按钮。 请注意,在控件被子类化之前,您无法调用此函数。 如果您希望按钮最初启用或禁用,您应该在您的 OnInitDialog() 覆盖中执行此操作。

我希望这篇文章有所帮助 - 该类相对简单和基础,但这是目标。 我经常遇到需要管理列表中项目的问题,但没有空间放置带有文本等的完整按钮来执行此操作,因此编写了此类来解决该问题。 我也觉得这是一个相当简单的用户界面概念,因为它在其他程序中使用,并且因为它与工具栏控件相似。 我以后可能会更新它,使其具有在子类化后更改其内容的能力,尽管我自己尚未遇到对此的需求。

致谢

我要感谢 Davide Calabro (davide_calabro@yahoo.com) 的 CButtonST 类。

历史

2001年5月13日 - 更新的源文件

© . All rights reserved.