按钮组控件






4.69/5 (9投票s)
2001年5月7日
3分钟阅读

94781

2116
一篇展示按钮组控件的文章,用于创建类似 Visual Studio 选项对话框中看到的工具栏类型组。
引言
这个控件是一个静态控件,用于创建一个类似于 Visual Studio 中的简化工具栏。正如演示应用程序所展示的(以及上面的图片),该控件在静态控件中创建一系列按钮。 这些按钮可以启用或禁用,并且该控件可以绘制带或不带静态边缘。
使用控件
将此控件放入您的项目中非常容易。这是一个例子
- 将文件
btnST.cpp
,btnST.h
,ButtonGroupCtl.cpp
和ButtonGroupCtl.h
添加到您的项目中。 这些文件可以在源代码下载中找到。 - 创建或打开您要添加按钮组的对话框资源。
- 插入一个带有适当文本的静态控件(在演示示例中是“Options”)。 如果您希望组周围有边框,请设置“Static Edge”标志
- 在对话框类的 ClassWizard 中,创建一个链接到控件的成员变量,并选择
CButtonGroupCtl
类如果未显示,请选择
CStatic
,然后编辑您的类定义以使用CButtonGroupCtl
代替。同样在您的类定义中,添加以下行
#include "ButtonGroupCtl.h"
- 向您的类添加一个
CImageList
变量,并在您的对话框类的构造函数中初始化它。 有关示例,请参见演示项目。 - 要向控件添加按钮,请在构造函数中使用
AddButton
函数void AddButton(int nID, int nImage, LPCTSTR pszToolTip)
nID 是您要添加的控件的 ID,例如
IDC_NEW
。
nImage 是您希望使用的 ImageList 中图像的索引。
pszToolTip 是您希望用于控件的工具提示。 您可以将其留空。请注意,一旦控件被子类化后,您就无法添加或删除按钮 - 它并非旨在替代工具栏控件。
- 现在,为您的对话框类中的按钮添加消息处理程序。 您必须手动执行此操作,首先向您的类添加一个函数(例如
OnAdd()
)然后,您应该在消息映射中添加一个条目,例如
ON_BN_CLICKED(IDC_NEW, OnAddItem)
或者,您可以使用 EnableButton(nID, bEnable = true)
函数在运行时启用和禁用按钮。 请注意,在控件被子类化之前,您无法调用此函数。 如果您希望按钮最初启用或禁用,您应该在您的 OnInitDialog()
覆盖中执行此操作。
我希望这篇文章有所帮助 - 该类相对简单和基础,但这是目标。 我经常遇到需要管理列表中项目的问题,但没有空间放置带有文本等的完整按钮来执行此操作,因此编写了此类来解决该问题。 我也觉得这是一个相当简单的用户界面概念,因为它在其他程序中使用,并且因为它与工具栏控件相似。 我以后可能会更新它,使其具有在子类化后更改其内容的能力,尽管我自己尚未遇到对此的需求。
致谢
我要感谢 Davide Calabro (davide_calabro@yahoo.com) 的 CButtonST
类。
历史
2001年5月13日 - 更新的源文件