如何:在外接程序按钮上显示自定义图标

您可以将显示在外接程序命令旁边的默认图标(笑脸)替换为如何:更改外接程序的默认图标中所列出预定义标准图标以外的某个图标。

具体方法为:

  • 将图标位图添加为项目中的资源。

  • AddNamedCommand2 方法中的 MSOButton 参数设置为 false(此设置会通知方法查找图标位图)。

  • 在外接程序项目的命令栏部分中引用该资源的 ID 号。

下面的过程演示如何将自定义图标添加到外接程序按钮。

备注

显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。这些过程是在“常规开发设置”处于活动状态时开发的。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置

将自定义位图作为外接程序按钮图标添加到外接程序项目

  1. 打开一个现有的外接程序解决方案,或者在 Visual Studio 中创建一个新的外接程序解决方案。

  2. 将新的资源文件添加到您的外接程序项目。 具体方法为:

    1. 在**“解决方案资源管理器”**中右击该外接程序项目。

    2. 在**“添加”菜单上选择“新建项”**。

    3. 在“模板”列表中选择**“资源文件”,然后单击“添加”**按钮。 保留其默认名称 (Resources1.resx)。

      这将启动 Visual Studio**“资源编辑器”**。

  3. 如果该资源文件未显示在**“解决方案资源管理器”中,请单击工具栏上的“显示所有文件”**按钮。

  4. 外接程序需要一个整数值作为位图参数。 设置此属性使您可以编辑资源文件并使用数字标识符命名其位图资源(如果 .resx 文件是外接程序项目的一部分则无法执行某些操作)。

  5. 在**“资源编辑器”中,单击“添加资源”,从下拉项中选择“新建图像”,然后选择“BMP 图像”**。 现在,保留其默认名称 (Image1.bmp)。

    或者,您可以选择一幅现有的 16 x 16 像素的位图图像(16 色或真彩皆可)。 外接程序的自定义图标必须是 16 x 16 像素,并且必须是 16 色或真彩色。

  6. 在位图属性窗口中,将**“高度”“宽度”属性都更改为 16。 将“颜色”**属性设置为“16 色”或“真彩色”。

  7. 如果您创建了新的位图,则可在**“资源编辑器”**中编辑该图片。

  8. 打开外接程序的 Connect 类。 在 AddNamedCommand2 行的 OnConnection 方法中,将 MSOButton 参数值从 true 更改为 false,将 Bitmap 参数值从 59 更改为 1。 例如:

    command = commands.AddNamedCommand2(_addInInstance, "MyAddin1", " 
    MyAddin1", "Executes the command for MyAddin1", False, 1, Nothing, 
    CType(vsCommandStatus.vsCommandStatusSupported, Integer) + 
    CType(vsCommandStatus.vsCommandStatusEnabled, Integer), 
    vsCommandStyle.vsCommandStylePictAndText, 
    vsCommandControlType.vsCommandControlTypeButton)
    
    Command command = commands.AddNamedCommand2(_addInInstance, 
    "MyAddin1", "MyAddin1", "Executes the command for MyAddin1", false, 
    1, ref contextGUIDS, 
    (int)vsCommandStatus.vsCommandStatusSupported+(int)vsCommandStatus.
    vsCommandStatusEnabled, (int)vsCommandStyle.vsCommandStylePictAndText, 
    vsCommandControlType.vsCommandControlTypeButton);
    

    将 MSOButton 参数设置为 false 会强制外接程序通过查找资源文件来获得其按钮位图。 数字 1 将是该位图的标识符。 (它是在稍后的步骤中设置的。)

  9. 完成此操作后,在**“文件”菜单上选择“全部保存”,在“生成”菜单上选择“生成解决方案”,然后卸载该项目。 为此,请在“解决方案资源管理器”中右击项目节点,然后单击“卸载项目”**。

  10. *** 文件资源管理器 ***,请使用 *** 记事本 *** 编辑Resource1.resx文件。

  11. 搜索“Image1”的所有实例,并将它们更改为“1”。完成此操作后,保存该文件。

  12. 在外接程序的 \Resources 文件夹中,将位图文件名从 Image1.bmp 更改为 1.bmp。

  13. 再次重新加载外接程序项目(方法是右击**“解决方案资源管理器”中的项目节点,然后单击“重新加载项目”**)并运行它。

  14. 单击**“工具”**菜单。

    外接程序即显示在**“工具”**菜单上,并带有您的自定义图标。

将一个自定义位图作为外接程序按钮图标添加到本机 Visual C++ 外接程序

  1. 按照上述的相同过程执行操作,但更改下列项。

  2. 创建新的 Visual C++ Win32 DLL 项目。

  3. 添加资源文件 (.rc)。

  4. 在资源视图中,添加一个位图 (16 x 16) 并为它指定一个数值 ID。

    该位图必须是 16 x 16 像素并且为 16 色或真彩色。

  5. 在 Connect.cpp 中更新 AddNamedCommand2 方法,方法是将 MSOButton 设置为 VARIANT_FALSE,并将 Bitmap 设置为以前指定的位图 ID。

  6. 生成 DLL。

  7. 在本机外接程序 DLL 目录中创建子文件夹“1033”(用于“英语”区域设置)。

  8. 将附属 DLL 复制到“1033”目录。

  9. 打开 AddIn.rgs 并添加两个注册表项值“SatelliteDllName”和“SatelliteDllPath”。例如:

    HKCU
    {
       NoRemove 'SOFTWARE'
       {
          NoRemove 'Microsoft'
          {
             NoRemove 'VisualStudio'
             {
                NoRemove '8.0'
                {
                   NoRemove 'AddIns'
                   {
                      ForceRemove 
                        'NativeAddinCustBitmap.Connect'
                         {
                           val LoadBehavior = d 0
                           val CommandLineSafe = d 0
                           val CommandPreload = d 1
                           val FriendlyName = s 'NativeAddinCustBitmap'
                           val Description = s 'NativeAddinCustBitmap 
                             Description'
                           val SatelliteDllName = s  
                             'NativeAddinCustBitmapUI.dll'
                           val SatelliteDllPath = s 
                             'C:\Test\CustomBitmap\NativeAddinCustBitmap
                             \NativeAddinCustBitmap\Debug'
                         }
                      }
                   }
                }
             }
          }
       }
    

    在“SatelliteDllPath”中,不要在路径中添加区域设置 ID。 它将在运行时自动追加。

  10. 重新生成外接程序以注册更新后的信息。

请参见

任务

如何:更改外接程序的默认图标

如何:将外接程序公开为工具栏上的按钮

概念

在工具栏和菜单上显示外接程序