Visual Studio 的工具栏编辑器






4.88/5 (63投票s)
一个用于 Visual Studio 的工具栏编辑器。它可以修改、添加和创建按钮、图像以及工具栏所需的一切。

引言
我通常花费大量时间来为我的项目提供一个漂亮且用户友好的 GUI。在我看来,在所有桌面项目中,为用户提供能够加快常用功能的操作是“几乎”强制性的。最简单(也是最常用)的方法是构建一个工具栏。Visual Studio 自带一个工具栏编辑器,但说实话,我讨厌它;它仍然限制为 16 种颜色,无法加载外部图像,而且每次你想添加一个新按钮时,都非常痛苦。出于所有这些原因,我为 Visual Studio IDE 编写了自己的工具栏编辑器。
安装
只需运行安装程序,然后按照屏幕上的说明进行操作(无非是通常的:下一步,下一步,是,是,下一步,完成)。Toolbar Editor (TE) 的安装程序还会创建两个子目录:temp 和 imgLib。您可以将所有您经常用于构建工具栏的图标/图像放入 imgLib 目录:它们将在 TE 中显示和预览,因此您可以轻松地将它们拖放到当前正在处理的工具栏上。这两个文件夹的默认位置是
[USERAPPDATA]\tbeditor
(在标准的 Windows 7 安装中,它类似于:C:\Users\username\AppData\Roaming\tbeditor)
无论如何,这些文件夹的位置可以通过选项对话框中的专用选项轻松自定义。
为了正确管理工具栏按钮 ID,您还应该指定 afxres.h 文件的位置。从 1.6 版本开始,Toolbar Editor 会尝试自行查找它,但如果失败,您应该手动选择它。有关此主题的更多信息,请参阅“工具栏编辑器的限制”部分。
工作原理
您可以通过几个简单的步骤开始编辑工具栏
- 打开要编辑的项目(或创建新工具栏)的资源文件 (.rc)
- 从组合框中选择资源 ID。
- 单击“扫描”按钮以获取当前加载工具栏的预览。
- 编辑工具栏
- 使用“保存工具栏”按钮将修改合并到资源文件
现在您可以添加新按钮,移动现有按钮等等。工具栏和用于预览的列表框都支持拖放,因此您可以使用鼠标轻松移动按钮。在对话框窗口的右侧,有一个列表框,您可以将其用作库;它从一个文件夹中读取所有支持类型的图像(请记住,如果需要,您可以在“选项”对话框中更改它),因此您可以将它们拖放到工具栏上(您还可以从资源管理器窗口拖放新图像)。如果加载的图像太大(或太小),您可以使用主菜单中的 `Resize` 函数。
当您的工具栏准备好后,您可以单击“保存工具栏”按钮将其与您的项目合并:所有需要的 ID 将被创建并添加到 `resource.h` 文件中。如果您不想修改您的项目文件,您可以禁用此功能,新文件将只在编辑器的临时文件夹中创建。默认情况下,生成的位图具有 4 位色深(16 种颜色),以便在 Visual Studio 编辑器中也保持预览活动,但可以创建灰色、真彩色和“热”位图。

位图将在当前打开项目的 `./res` 文件夹中创建。默认情况下,它们的名称与工具栏的位图名称相同,带有 `_TC`、`_HT` 和 `_GR` 后缀,但您可以更改目标文件夹和名称。您可以将这些位图添加到您的项目,然后使用一些真彩色工具栏类,如 Dany Cantin 的 CTrueColorToolbar。
假设 `YOUR_BITMAP_TC`、`YOUR_BITMAP_HT` 和 `YOUR_BITMAP_GR` 是这些位图的 ID,那么您可以在您的 `OnCreate` 中像这样使用它们
m_ToolBar.LoadTrueColorToolBar(
16,
YOUR_BITMAP_TC,
YOUR_BITMAP_HT,
YOUR_BITMAP_GR);
您应该始终创建真彩色位图,因为当您再次打开工具栏进行编辑时,它将用于创建 `imagelist`,而不是 16 色版本。请注意,这仅在真彩色位图使用默认名称 `bitmap_name_TC.bmp` 保存时才有效。
最后,如果您只需要 `imagelist`,您可以使用位图部分的“保存”按钮保存它。这不会更新项目中的 `.rc` 或 `resource.h`。
创建新工具栏
即使您正在创建一个新工具栏,您也需要一个资源文件来放置它。因此,请记住在开始处理新工具栏之前打开正确的资源文件。在您选择“文件”菜单中的“新建”(或单击主 `TE` 工具栏中的“新建”按钮)后,工具栏编辑器将询问有关工具栏的基本信息:ID、大小和类型(Visual C++ 20XX 或 Visual C++ 6)。

工具栏 ID 也可以是新的(以前未在 `resource.h` 中定义),但要小心:`TE` 不会检查您输入的是否是有效的 ID 名称,因此请避免空格、特殊字符等...)。在此之后,您可以像之前描述的那样工作,当您准备好时,使用“生成”按钮合并工具栏,或使用菜单项“工具”->“工具栏”->“复制到剪贴板”将工具栏代码复制到剪贴板。
兴趣点
嗯,首先,我希望这个工具真的对除了我之外的其他人也有用。您还可以找到一个拖放功能的自定义工具栏实现(它在不按 Shift 键的情况下工作)。

工具栏编辑器的限制
关于 ID 有一些注意事项。我的编辑器从 `.rc` 文件和您的项目中的 `resource.h` 文件中定义的 ID 读取工具栏结构:它不知道其他文件中定义的任何 ID。因此,在工具栏编辑器中编辑 ID 时要小心:如果您使用的 ID 已在 `resource.h` 以外的其他地方定义,则在编译期间可能会出现问题。
作为备用解决方案,请考虑 `TbEditor` 可以读取在其他文件中定义的 ID,只需将它们添加到选项对话框中的文件列表中即可。

只是一个说明:安装包**不包含** `afxres.h`,因为我不知道该文件是否受 Microsoft 版权保护和/或是否可再分发。TBEditor 提供了在您的系统中自动查找此文件的功能,但请注意其准确性并非 100%。
为了将新工具栏放入您的 `.rc` 文件中,TE 使用以下文本作为标记:// Toolbar
。如果 TE 无法在您的文件中找到该标记,则新工具栏的合并将失败(请注意,这仅对新工具栏而言是一个问题)。
编译工具栏编辑器的指南
工具栏编辑器需要 Davide Pizzolato 的 CxImage 类才能编译。 main folder
|
|-- tbeditor source directory
|-- CxImage
|-- jpeg
|-- j2k
|-- jbig
|-- jasper
|-- tiff
|-- png
|-- zlib
其中 j2k、jpeg、jbig 等都是 `CxImage` 压缩包中的文件夹。 |
鸣谢
我的工作灵感来自 Tomkat'ss [^] 的出色工具 (Super ImageList and ToolBar generator [^]),在我开发自己的工具之前,它在 `imagelist` 创建方面给了我很大帮助。我还要感谢
- Davide Pizzolato 的 CxImage
- Cyril Zekser 的 对话框上的工具栏和状态栏
- 以及本项目中使用的所有控件的作者
历史
- 1.0 - (2005/08/02)
- 首次公开发布
- 1.1 - (2005/08/03)
- 修复了一些与 VC6 的兼容性问题
- 1.2 - (2005/08/05)
- 现在可以解析更多带有 ID 的文件
- 静态链接以避免依赖问题
- 将真彩色位图生成复选框默认更改为 `true`
- 现在,如果可用,当工具栏打开时,将使用真彩色位图创建 `imagelist`
- 在 16 色位图创建中禁用了“误差扩散”
- 1.3 - (2005/09/12)
- 添加了“新建”工具栏功能
- 添加了热图像列表创建
- 添加了一些快捷键
- 添加了 MRU 列表
- 改进了拖放功能(现在您也可以用它来移动按钮,并通过按住 CTRL 键只替换图像)
- 修复了两个按钮具有相同 ID 时的错误
- 1.3b - (2005/10/27)
- 添加了更新检查程序
- 修复了 MRU 实现导致的错误(启动时崩溃)
- 修复了 16 色位图的错误(预览中显示难看)
- 1.3c - (2005/11/06)
- 对代码进行了一些内部修改以准备新版本
- 修复了“检查更新程序”中的错误
- 1.3d - (2006/07/04)
- 对代码进行了一些内部修改以准备新版本(再次)
- 解析过程中更好的错误处理
- 次要错误修复
- 1.41 - (2008/01/05) **SHIPON**
- 新的对话框布局,可处理最大 48x48 像素的工具栏
- 更好的图标处理:现在使用前所有图标都已转换为真彩色
- 增加了对 PNG 图像/图标的支持
- 修复了在没有真彩色位图的情况下重新打开现有工具栏的错误
- 修复了首次显示工具栏时的错误:列表控件没有图标预览
- 次要 bug 修复
- 1.42 - (2009/03/31) **SHIPON**
- 选择透明颜色的新功能
- 修复了导致背景颜色选择错误的错误
- 修复了选择错误的工具栏 ID 进行解析时导致的崩溃
- 1.50 - (2011/07/09) **P.WIP**
- 程序默认数据目录已移至 `[USERAPPDATA]` Windows 默认文件夹。这是为了避免在 Vista/Windows 7 中对管理员用户权限的要求。
- 在安装包中添加了更详细的手册
- 改为共享 MFC 链接以减小 EXE 文件大小
- 修复了新功能中选择背景颜色的错误
- 修复了首次显示工具栏时的错误:`listcontrol` 没有图标预览
- 小错误修复
- 1.60 - (2012/10/19)。***** 烟花 ****
- 改进
- 图像列表编辑
- 旋转图像:现在启用了旋转图像功能
- 调整图像大小现在使用更好的调整算法
- 将图像导出到库功能
- 选项对话框中的一些改进:afxres.h 文件的“自动检测”功能(适用于 Visual Studio 2005 到 2010)
- 当保存小于 24 位的位图(例如 16 色位图)时,调色板优化会阻止背景颜色更改
- 更好的工具栏布局和文档处理
- 支持 UNICODE 文件
- 一些用户界面改进
- 错误修复
- 修复了保存灰度位图时的一个错误(位图文件错误地报告为 4 位深度)
- 修复了菜单的一些不良行为
- 次要 bug 修复
附加许可说明
本程序免费提供,并“按原样”提供,不附带任何明示或暗示的保证。使用风险自负!