FAQ
ショートカット メニューの作成方法

ナレッジ番号:5577 | 登録日:2023/07/27 | 更新日:2024/11/21

概要

ショートカット メニューを、新規に作成するためのサンプル コードをご紹介します。

Image

 

サンプル コード

アドイン ツールを有効化後、マップ ビュー上で右クリックすると、デフォルトのショートカット メニューではなく、新規に作成したショートカット メニューが表示されます。

新規に作成したショートカット メニューには、ArcMap の既存コマンドを呼び出し、 [新規作成] ボタン・[開く] ボタン・[上書き保存] ボタンを挿入しています。

<ArcMap の既存コマンド一覧>

http://desktop.arcgis.com/en/arcobjects/latest/net/webframe.htm#858a508c-b771-467c-81e6-c6aa72d88f9c.htm

 

//名前空間の設定
using ESRI.ArcGIS.Framework;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.SystemUI;
using ESRI.ArcGIS.Geometry;

protected override void OnMouseDown(ESRI.ArcGIS.Desktop.AddIns.Tool.MouseEventArgs arg)
{
       base.OnMouseDown(arg);
      
       //ArcMap アプリケーションから Commandbars を取得 
       ICommandBars pComBars = ArcMap.Application.Document.CommandBars;
      
       //ショートカット メニューを ICommandBar 型で取得  
       ICommandBar pNewbar = pComBars.Create("My Shortcut Menu", esriCmdBarType.esriCmdBarTypeShortcutMenu);
       System.Object pOptIndex = System.Type.Missing;

       //ショートカット メニューに追加するコマンドの UID を取得
       // [新規作成] ボタン
       UID pUid0 = new UIDClass();
       pUid0.Value = "{119591DB-0255-11D2-8D20-080009EE4E51}";
       pUid0.SubType = 1;
       // [開く] ボタン 
       UID pUid1 = new UIDClass();
       pUid1.Value = "{119591DB-0255-11D2-8D20-080009EE4E51}";
       pUid1.SubType = 2;
       // [上書き保存] ボタン
       UID pUid2 = new UIDClass();
       pUid2.Value = "{119591DB-0255-11D2-8D20-080009EE4E51}";
       pUid2.SubType = 3;

    //ショートカット メニューにコマンドを追加
       pNewbar.Add(pUid0, pOptIndex);
       pNewbar.Add(pUid1, pOptIndex);
       pNewbar.Add(pUid2, pOptIndex);

       //クリック地点のマップ座標ポイントの取得
       IPoint pDrawp = ArcMap.Document.ActivatedView.ScreenDisplay.DisplayTransformation.ToMapPoint(arg.X, arg.Y);

       //右クリック時に、作成したショートカット メニューを表示
       if(arg.Button == MouseButtons.Right)
       {
              pNewbar.Popup();
       }
}
'名前空間の設定
Imports ESRI.ArcGIS.Framework
Imports ESRI.ArcGIS.SystemUI
Imports ESRI.ArcGIS.esriSystem
Imports ESRI.ArcGIS.Geometry

Protected Overrides Sub OnMouseDown(arg As ESRI.ArcGIS.Desktop.AddIns.Tool.MouseEventArgs)

        'ArcMap アプリケーションから Commandbars を取得
        Dim pCombars As ICommandBars = My.ArcMap.Application.Document.CommandBars

        'ショートカット メニューを ICommandBar 型で取得    
        Dim pNewbar As ICommandBar = pCombars.Create("MyShortcutMenu", esriCmdBarType.esriCmdBarTypeShortcutMenu)
        Dim pOptIndex As System.Object = System.Type.Missing

        'ショートカット メニューに追加するコマンドの UID を取得
        ' [新規作成] ボタン
        Dim uid0 As UID = New UIDClass()
        uid0.Value = "{119591DB-0255-11D2-8D20-080009EE4E51}"
        uid0.SubType = 1
        ' [開く] ボタン
        Dim uid1 As UID = New UIDClass()
        uid1.Value = "{119591DB-0255-11D2-8D20-080009EE4E51}"
        uid1.SubType = 2
        ' [上書き保存] ボタン
        Dim uid2 As UID = New UIDClass()
        uid2.Value = "{119591DB-0255-11D2-8D20-080009EE4E51}"
        uid2.SubType = 3

        'ショートカット メニューにコマンドを追加
        newBar.Add(uid0, optionalIndex)
        newBar.Add(uid1, optionalIndex)
        newBar.Add(uid2, optionalIndex)

        'クリック地点のマップ座標ポイントの取得
        Dim pDrawp As IPoint = My.ArcMap.Document.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(arg.X, arg.Y)

        '右クリック時に、作成したショートカット メニューを表示
        If (arg.Button = Windows.Forms.MouseButtons.Right) Then
            pNewbar.Popup()
        End If

 End Sub

メタデータ

機能

種類

製品