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

Visual Studio 的工具栏编辑器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.88/5 (63投票s)

2005年8月3日

CPOL

9分钟阅读

viewsIcon

381602

downloadIcon

52480

一个用于 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 类才能编译。
这个类用于构建、更改位图的分辨率、颜色深度等。
`tbeditor` 解决方案配置为在与 `tbeditor` 文件夹相同的目录中查找 `CxImage`。换句话说,您的目录结构应该类似于

main folder 
| 
|-- tbeditor source directory 
|-- CxImage 
|-- jpeg 
|-- j2k 
|-- jbig 
|-- jasper 
|-- tiff 
|-- png 
|-- zlib

其中 j2k、jpeg、jbig 等都是 `CxImage` 压缩包中的文件夹。
最新的源代码版本始终可以在 sourceforge 存储库中找到。

鸣谢 

我的工作灵感来自 Tomkat'ss [^] 的出色工具 (Super ImageList and ToolBar generator [^]),在我开发自己的工具之前,它在 `imagelist` 创建方面给了我很大帮助。我还要感谢

历史

  • 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 修复

附加许可说明

本程序免费提供,并“按原样”提供,不附带任何明示或暗示的保证。使用风险自负!

© . All rights reserved.