Engine sketch context menu.
Product Availability
Description
The CLSID of this menu is: {4F29BC92-2988-45E8-8317-0169EAB954C6}.
This menu works with the ToolbarControl, PageLayoutControl, and MapControl.
If the ArcGIS Engine application using this menu is initialized with an ArcGIS Engine Runtime license or an ArcGIS for Desktop Basic license, this menu can be used to edit shapefiles and personal geodatabases.
If the ArcGIS Engine application using this menu is initialized with an ArcGIS Engine GeoDatabase Editing license, or ArcGIS for Desktop Standard or ArcGIS for Desktop Advanced, this menu can be used to edit data within an enterprise geodatabase.
Interfaces
| Interfaces | Description |
|---|---|
| IMenuDef (esriSystemUI) | Provides access to members that define a menu. |
Remarks
This menu can only be used as a pop up menu or context menu. Create a new ToolbarMenu and add this predefined ControlsEditingSketchContextMenu to it using the IToolbarMenu::AddItem method. To display the ToolbarMenu as a right click context menu use the IToolbarMenu::PopupMenu method.
To enable the accelerator keys on this context menu complete the following steps:
- Set the Form property KeyPreview to be True.
- Translate the specified KeyCode using the ICommandPool2::TranslateAcceleratorKey in the Form_KeyDown.
- If you want the accelerator keys to be recognized without displaying the ControlsEditingSketchContextMenu then create each command in the IToolbarMenu::CommandPool using the code below.
privateIToolbarMenu m_ToolbarMenu;private voidMainForm_Load(objectsender, EventArgs e) {//Create a new ToolbarMenum_ToolbarMenu =newToolbarMenu();//Share the ToolbarControl's command poolm_ToolbarMenu.CommandPool = axToolbarControl1.CommandPool;//Set the hook to the MapControlm_ToolbarMenu.SetHook(axMapControl1);//Add commands to the ToolbarMenum_ToolbarMenu.AddItem("esriControls.ControlsEditingSketchContextMenu", 0, 0,false, esriCommandStyles.esriCommandStyleTextOnly);//Create each command on the ToolbarMenu so that the Accelerator Keys are recognized.//Alternatively the user must popup the menu before using the Accelerator KeyslongitemCount = m_ToolbarMenu.CommandPool.Count;for(inti = 0; i < itemCount; i++) { ICommand pCommand = m_ToolbarMenu.CommandPool.get_Command(i); pCommand.OnCreate(m_mapControl); } }private voidMainForm_KeyDown(objectsender, KeyEventArgs e) { ICommandPool2 pPool2; pPool2 = m_ToolbarMenu.CommandPoolasICommandPool2; pPool2.TranslateAcceleratorKey((int)e.KeyCode); }private voidaxMapControl1_OnMouseUp(objectsender, IMapControlEvents2_OnMouseUpEvent e) {if(e.button == 2) m_ToolbarMenu.PopupMenu(e.x, e.y, axMapControl1.hWnd); }
Private m_ToolbarMenu As IToolbarMenu
Private Sub MainForm_Load(ByVal sender As System.Object, ByVal e As EventArgs) Handles MyBase.Load
'get the MapControl
m_mapControl = CType(axMapControl1.Object, IMapControl3)
'disable the Save menu (since there is no document yet)
menuSaveDoc.Enabled = False
'Create a new ToolbarMenu
m_ToolbarMenu = New ToolbarMenu()
'Share the ToolbarControl's command pool
m_ToolbarMenu.CommandPool = axToolbarControl1.CommandPool
'Set the hook to the MapControl
m_ToolbarMenu.SetHook(axMapControl1)
'Add commands to the ToolbarMenu
m_ToolbarMenu.AddItem("esriControls.ControlsEditingSketchContextMenu", 0, 0, False, esriCommandStyles.esriCommandStyleTextOnly)
'Create each command on the ToolbarMenu so that the Accelerator Keys are recognized. Alternatively
'the user must popup the menu before using the Accelerator Keys
Dim itemCount As Integer
itemCount = m_ToolbarMenu.CommandPool.Count
Dim i As Integer
For i = 0 To itemCount - 1
Dim pCommand As ICommand
pCommand = CType(m_ToolbarMenu.CommandPool.Command(i), ICommand)
pCommand.OnCreate(m_mapControl)
Next
End Sub
Private Sub axMapControl1_OnMouseUp(ByVal sender As System.Object, ByVal e As ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseUpEvent) Handles axMapControl1.OnMouseUp
If (e.button = 2) Then
m_ToolbarMenu.PopupMenu(e.x, e.y, axMapControl1.hWnd)
End If
End Sub
Private Sub MainForm_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
Dim pPool2 As ICommandPool2
pPool2 = CType(m_ToolbarMenu.CommandPool, ICommandPool2)
pPool2.TranslateAcceleratorKey(e.KeyCode)
End Sub