一、显示或隐藏接口
1、C++接口: MxDraw::ShowMenuBar
2、COM接口: ocx的属性, ShowModelBar。例如JS语言,隐藏菜单栏:
1 | |
二、菜单栏文件
控件MxDraw52.dll所在目录下,所有的mnu文件,都是菜单定义文件,它是文本文件,用记事本打开编辑,格式如下:
1、文件中第一行是菜单文件头,每列内容如下 :
文件类型字符串 | 资源文件名(后面菜单的图标默认从该dll中加载) | 图标的透明颜色 | 位置 | 菜单名 | 是否可以浮动,Y \N |
"MxDrawMenuBarFile" | "MxDraw.dll" | (214 211 206) | "top" | "主菜单" | "Y" |
“//”是文件中的注释
文件中后面每行代表一个菜单项
"POPMENUS" "文件(&F)",表示一个弹出菜单开始
"POPMENUE" 表示弹出菜单的结束
2、后面每列的内容如下:
命令名称 | 点击执行的命令 | 图标索引字符串 | 资源文件名 | 命令提示字符串 | "命令ID" | ID类型(目前控件内部使用,一般为空) |
"新建(&N)" | Mx_New | "IDB_NEW_BITMAP" | "" | "" | "1" | "" |
(1)命令名称:新建(&N)。
(2)点击执行的命令:C++使用acedRegCmds->addCommand注册命令。其它语言使用DMxDrawX::RegistUserCustomCommand注册命令。
(3)图标索引字符串:IDB_NEW_BITMAP。
(4)资源文件名:
①为空取默认资源文件名,该名称需要去掉控件版本号如:MxDraw52.dll写成MxDraw.dll,控件会根据具体情况加上这个版本号。
②资源文件如是local:开头,表示是一个本地bmp文件,如:取mytoolbar.bmp做工具按钮图标:local:mytoolbar.bmp
比如:菜单图标从本地bmp文件加载:
"自定义新建(&N)" "Mx_New" "IDB_NEW_BITMAP" "local:mytoolbar.bmp"
③资源文件如是web:开头,表示是一个网络服务器上的bmp文件,如:取mytoolbar.bmp做工具按钮图标: web:mytoolbar.bmp
比如:菜单图标从服务器bmp文件加载,bmp文件与菜单文件在同一个服务器目录中:
"自定义新建(&N)" "Mx_New" "IDB_NEW_BITMAP" "web:mytoolbar.bmp"
(5)命令提示字符串:为空。
(6)命令ID:指定菜单点击后响应的命令事件id,如不为空,可以在控件的命令执行事件中响应菜单点击事件: ImplementCommandEvent。
(7)ID类型:目前控件内部使用,一般为空。
比如:菜单图标从本地bmp文件加载:
1 | |
比如:菜单图标从服务器bmp文件加载,bmp文件与菜单文件在同一个服务器目录中:
1 | |
三、从指定菜单文件加载
1、C++接口: MXDRAWOCXHANDLE MxDraw::CreateMxDraw第五个参数表示菜单加载文件
2、COM接口: Iniset属性,MenuFile=mymenu.mun,它支持从服务器上加载菜单文件
帮助如下图:
如Js语言从服务器加载菜单,菜单文件相对于当前网页:
1 | |
相对服务器路径, "~"开头,如下:
1 | |
四、重新从文件加载菜单接口:
C++ | MxDraw::ReLoadMenu |
COM接口,它是自定义函数: | MxDrawXCustomFunction::Mx_ReLoadMenu |
C#代码,如下调用:
1 | |
五、禁用或启用菜单项
C++接口函数: | MxDraw::EnableMenuBarControl |
MxDraw::EnableMenuBarControl方法
激活或禁用菜单项奖条上的按钮,说明如下:
参数 | 说明 |
MXDRAWOCXHANDLE hOcx | 控件窗口句柄 |
LPCTSTR pszControlName | 按钮的名称,在工具条定义文件(扩展名为mxt)第一列就是按钮名称 |
BOOL isEnable = TRUE | 是否激活,传false禁用工具 |
六、显示或隐藏菜单项
C++接口 | MxDraw:: HideMenuBarControl |
COM接口 | _DMxDrawX::HideMenuBarControl |
例如:
1 | |
JS代码:
1 2 3 4 5 6 7 8 9 10 11 |
|
七、完整例子说明
在B/S模式下,一步一步的说一下,如何用户自定义菜单,并响应点击事件。 详细例子可以参考samples\AspNet\AspNet.sln。
1、新建菜单文件
(1)新一个文本文件: mxcad.mnu,内容如下:
(2)定一个菜单按钮,按钮名为MyMenuButtonName,图标从服务器上加载,图标名为mytoolbar.bmp,按钮点击执行命令,命令id为99。
1 2 3 4 | |
2、把文件上传到服务器
把mxcad.mnu, mytoolbar.bmp文件放到服务器上,并放在同一个目录下,保证能直接从ie中访问。
3、Js程序里引用菜单
菜单文件放在当前网页目录下。
1 | |
4、响应命令执行事件,如下:
1 2 3 4 5 6 7 | |
1 | |
八、右键弹出菜单
控件支持鼠标右键弹出菜单,菜单的文件格式和前面的主菜单文件格式一样。 详细参考例子,samples\ie\iedemoTest.htm。
弹出函数C++接口 | MxDraw::TrackPopupMenu |
COM接口 | DMxDrawX::TrackPopupMenu |
在B/S模式下,下面一步一步的说明如何支持该功能:
1、新建菜单文件
(1)新一个文本文件: mxpop.mnu,内容如下:
(2)定一个菜单按钮,按钮名为MyMenuButtonName,图标是服务器上加载,图标名为mytoolbar.bmp,按钮点击执行命令,命令id为99。
1 2 3 4 | |
2、把文件上传到服务器
把mxpop.meu, mytoolbar.bmp文件放到服务器上,并放在同一个目录下,保证能直接从ie中访问。
3、响应鼠标右键事件,弹出菜单
菜单文件放在当前网页目录下。
1 | |
1 2 3 4 5 6 7 8 9 10 | |
4、响应命令执行事件,如下:
1 2 3 4 5 6 7 | |
1 | |