0
点赞
收藏
分享

微信扫一扫

CAD菜单栏

殇感故事 2022-11-15 阅读 204


一、显示或隐藏接口

1、C++接口: MxDraw::ShowMenuBar

2、COM接口: ocx的属性, ShowModelBar。例如JS语言,隐藏菜单栏:

1

​<param name=​​​​"ShowMenuBar"​​​ ​​value=​​​​"0"​​​​>​

二、菜单栏文件

控件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

​"自定义新建(&N)"​​​ ​​"Mx_New"​​​ ​​"IDB_NEW_BITMAP"​​​ ​​"local:mytoolbar.bmp"​

比如:菜单图标从服务器bmp文件加载,bmp文件与菜单文件在同一个服务器目录中:

1

​"自定义新建(&N)"​​​ ​​"Mx_New"​​​ ​​"IDB_NEW_BITMAP"​​​ ​​"web:mytoolbar.bmp"​

三、从指定菜单文件加载

1、C++接口: MXDRAWOCXHANDLE MxDraw::CreateMxDraw第五个参数表示菜单加载文件

2、COM接口: Iniset属性,MenuFile=mymenu.mun,它支持从服务器上加载菜单文件

帮助如下图:

CAD菜单栏_服务器

 

如Js语言从服务器加载菜单,菜单文件相对于当前网页:

1

​<param name=​​​​"Iniset"​​​ ​​value=​​​​"MenuFile=./mymenu.mun"​​​​>​

相对服务器路径, "~"开头,如下:

1

​<param name=​​​​"Iniset"​​​ ​​value=​​​​"MenuFile=~/mymenu.mun"​​​​>​

四、重新从文件加载菜单接口:

C++

MxDraw::ReLoadMenu

COM接口,它是自定义函数:

MxDrawXCustomFunction::Mx_ReLoadMenu

C#代码,如下调用:

1

​axMxDrawX1.Call(​​​​"Mx_ReLoadMenu"​​​​, ​​​​"mxcad.mnu"​​​​);​

五、禁用或启用菜单项

C++接口函数:

MxDraw::EnableMenuBarControl

MxDraw::EnableMenuBarControl方法

激活或禁用菜单项奖条上的按钮,说明如下:

参数

说明

MXDRAWOCXHANDLE hOcx

控件窗口句柄

LPCTSTR pszControlName

按钮的名称,在工具条定义文件(扩展名为mxt)第一列就是按钮名称

BOOL isEnable = TRUE

是否激活,传false禁用工具

六、显示或隐藏菜单项

C++接口

MxDraw:: HideMenuBarControl

COM接口

_DMxDrawX::HideMenuBarControl

例如:

1

​mxOcx.HideMenuBarControl(​​​​"新建(&N),打开(&O)"​​​​,​​​​true​​​​);​

JS代码:

1

2

3

4

5

6

7

8

9

10

11

​function​​​ ​​InitMxDrawX() {​

​if​​​ ​​(mxOcx) {​

​if​​​ ​​(!mxOcx.IsIniting()) ​

​{​

​clearInterval(mxtime);​

​// 控件初始化完成,需要在启动做的事,在这里做​

 

​mxOcx.HideMenuBarControl(​​​​"新建(&N),打开(&O)"​​​​,​​​​true​​​​);​

​}​

​}​

​}}​

七、完整例子说明

在B/S模式下,一步一步的说一下,如何用户自定义菜单,并响应点击事件。 详细例子可以参考samples\AspNet\AspNet.sln。

1、新建菜单文件

(1)新一个文本文件: mxcad.mnu,内容如下:

(2)定一个菜单按钮,按钮名为MyMenuButtonName,图标从服务器上加载,图标名为mytoolbar.bmp,按钮点击执行命令,命令id为99。

1

2

3

4

​"MxDrawMenuBarFile"​​​ ​​"MxDraw.dll"​​​ ​​(214 211 206) ​​​​"top"​​​ ​​"主菜单"​​​ ​​"Y"​

​"POPMENUS"​​​ ​​"文件(&F)"​

​"MyMenuButtonName(&N)"​​​  ​​""​​​  ​​""​​​  ​​"web:mytoolbar.bmp"​​​  ​​""​​​ ​​"99"​

​"POPMENUE"​

2、把文件上传到服务器

把mxcad.mnu, mytoolbar.bmp文件放到服务器上,并放在同一个目录下,保证能直接从ie中访问。

3、Js程序里引用菜单

菜单文件放在当前网页目录下。

1

​<param name=​​​​"Iniset"​​​ ​​value=​​​​"MenuFile=./mxcad.mnu"​​​​>​

4、响应命令执行事件,如下:

1

2

3

4

5

6

7

​function​​​ ​​DoCommandEventFunc(iCmd)​

​{​

​if​​​ ​​(iCmd == 99) {​

​//该函数在mxcustom.js中 ​

​alert(​​​​"菜单按钮点击"​​​​);​

​}​

​}​

1

​document.getElementById(​​​​"MxDrawXCtrl"​​​​).ImplementCommandEventFun = DoCommandEventFunc;​

八、右键弹出菜单

控件支持鼠标右键弹出菜单,菜单的文件格式和前面的主菜单文件格式一样。 详细参考例子,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

​"MxDrawMenuBarFile"​​​ ​​"MxDraw.dll"​​​ ​​(214 211 206) ​​​​"top"​​​ ​​"主菜单"​​​ ​​"Y"​

​"POPMENUS"​​​ ​​"文件(&F)"​

​"MyMenuButtonName(&N)"​​​  ​​""​​​  ​​""​​​  ​​"web:mytoolbar.bmp"​​​  ​​""​​​ ​​"99"​

​"POPMENUE"​

2、把文件上传到服务器

把mxpop.meu, mytoolbar.bmp文件放到服务器上,并放在同一个目录下,保证能直接从ie中访问。

3、响应鼠标右键事件,弹出菜单

菜单文件放在当前网页目录下。

1

​document.getElementById(​​​​"MxDrawXCtrl"​​​​).ImplementMouseEventFun = MouseEvent;​

1

2

3

4

5

6

7

8

9

10

​function​​​ ​​MouseEvent(dX, dY, lType) {​

​// 3表示鼠标右键按下   ​

​if​​​​(lType == 3)​

​{​

​var​​​  ​​sPopMenu = mxOcx.GetOcxAppPath() + ​​​​".\\mxpop.mnu"​

​mxOcx.TrackPopupMenu(dX, dY, sPopMenu);​

​// 设置1,表示鼠标事件,不再往下传递.​

​mxOcx.SetEventRet(1);​

​}​

​}​

4、响应命令执行事件,如下:

1

2

3

4

5

6

7

​function​​​ ​​DoCommandEventFunc(iCmd)​

​{​

​if​​​ ​​(iCmd == 99) {​

​//该函数在mxcustom.js中 ​

​alert(​​​​"菜单按钮点击"​​​​);​

​}​

​}​

1

​document.getElementById(​​​​"MxDrawXCtrl"​​​​).ImplementCommandEventFun = DoCommandEventFunc;​

举报

相关推荐

0 条评论