方法: アドイン ボタンにカスタム アイコンを表示する

Visual Studio アドインは、Visual Studio 2013 では使用されなくなりました。 アドインを VSPackage 拡張機能にアップグレードしてください。 アップグレードの詳細については、「FAQ: アドインを VSPackage 拡張に変換する」を参照してください。

アドイン コマンドの既定のアイコン (スマイル マーク) は任意のアイコンと置き換えることができます。「方法: アドインの既定のアイコンを変更する」で、あらかじめ定義されている標準のアイコンについて取り上げていますが、それ以外にもさまざまなアイコンを使用できます。

その方法を次に示します。

  • アイコンのビットマップをリソースとしてプロジェクトに追加する。

  • 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 色または True Color) を選択することもできます。 アドインのカスタム アイコンには、16 色または True Color の 16 x 16 ピクセル画像を使用する必要があります。

  6. ビットマップのプロパティ ウィンドウで、[高さ][幅] の各プロパティを 16 に設定します。 [色] プロパティを 16 色または True Color に設定します。

  7. 新しいビットマップを作成した場合は、その画像をリソース エディターで編集します。

  8. アドインの Connect クラスを開きます。 OnConnection メソッドの AddNamedCommand2 の行で、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 色または True Color の 16 x 16 ピクセル画像を使用する必要があります。

  5. Connect.cpp の AddNamedCommand2 メソッドに修正を加えます。MSOButton を VARIANT_FALSE に設定し、Bitmap を、先ほど割り当てたビットマップ ID に設定します。

  6. DLL をビルドします。

  7. ネイティブのアドイン DLL ディレクトリに、サブフォルダー "1033" (English ロケールの場合) を作成します。

  8. サテライト DLL を "1033" ディレクトリにコピーします。

  9. AddIn.rgs を開き、2 つの reg キー値 "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. アドインをリビルドして、更新した情報を登録します。

参照

処理手順

方法: アドインの既定のアイコンを変更する

方法: アドインをツール バーのボタンとして表示する

概念

ツール バーおよびメニューでのアドインの表示