如何创建定制的ToolControl
本例要实现的是如何创建定制的ToolControl。ToolControl是指具有ComboBox的下拉列表 或 EditBox的编辑功能的一类控件。要创建定制的ToolControl,必须在类模块中实现ICommand 和 IToolControl接口。IToolControl接口包括hWnd属性和OnDrop, OnFocus事件。
l 要点
·IToolControl接口的hWnd属性,接受一个Window Handle。
·IToolControl接口的OnDrop事件,支持ToolControl的拖放,传入参数barType表示Bar类型。
·IToolControl接口的OnFocus事件,传入IcompletionNotify类型的参数complete,可以通过执行IcompletionNotify接口的SetComplete方法告之ArcMAP,ToolControl可以失去Focus。
l 程序说明
本例中涉及三个模块,详细描述如下,其中,在类模块中实现了IToolBarDef接口来创建自己的ToolControl。
l 代码
'1、frmImageCombo.frm模块,定义选中Combox某一项之后实现的功能。要求在Form上放置一个 Private Sub Form_Load() Private Sub ImageCombo1_Click() ' 2、modPublicVars.bas模块,定义工程中用到的全局变量。 ' 3、CustImageCombo.cls模块,实现接口Icommand和IToolControl。 Private Property Get ICommand_Bitmap() As esriCore.OLE_HANDLE Private Property Get ICommand_Caption() As String Private Property Get ICommand_Category() As String Private Property Get ICommand_Checked() As Boolean Private Property Get ICommand_Enabled() As Boolean Private Property Get ICommand_HelpContextID() As Long Private Property Get ICommand_HelpFile() As String Private Property Get ICommand_Message() As String Private Property Get ICommand_Name() As String Private Sub ICommand_OnClick() Private Sub ICommand_OnCreate(ByVal hook As Object) Private Property Get ICommand_Tooltip() As String Private Property Get IToolControl_hWnd() As esriCore.OLE_HANDLE Private Function IToolControl_OnDrop(ByVal barType As esriCore.esriCmdBarType) As Boolean '仅能将ToolControl拖放到ToolBar上 End Function Private Sub IToolControl_OnFocus(ByVal complete As esriCore.ICompletionNotify) |