返回介绍

菜单栏

发布于 2023-08-09 23:10:34 字数 14987 浏览 0 评论 0 收藏 0

显示或隐藏接口

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

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

CAD控件界面菜单栏的显示或隐藏,js代码实现如下:

//隐藏/显示菜单栏
function HideMenuBar()
{

    mxOcx.ShowMenuBar(isShow);
    isShow = !isShow;
}

隐藏菜单栏效果如下:

menubar.png

主要用到函数说明:

函数名:_DMxDrawX::HideMenuBarControl

隐藏或显示工具条上的按钮,成功返回TRUE。详细说明如下:

参数说明

VARIANT_BOOL isHide

是否隐藏按钮

sControlName

按钮名称,多个按钮名称,可以用逗号分隔开,为空,隐藏或显示所有按钮


例如隐藏菜单栏上的新建和打开按钮js中实现代码说明:

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

隐藏前:

hidemnubefore.png

隐藏后:

hidemnuafter.png

菜单栏文件

CAD控件MxDraw52.dll所在目录下,所有的mnu文件,都是菜单定义文件 ,它是文本文件,用记事本打开编辑,格式如下:

文件中第一行是菜单文件头,每列内容如下 :

文件类型字符串资源文件名(后面菜单的图标默认从该dll中加载)图标的透明颜色位置菜单名是否可以浮动,Y \N
"MxDrawMenuBarFile""MxDraw.dll"(214 211 206)"top""主菜单""Y"

后面每列的内容如下:

命令名称点击执行的命令图标索引字符串资源文件名命令提示字符串"命令ID"ID类型(目前控件内部使用,一般为空)
"新建(&N)"Mx_New"IDB_NEW_BITMAP""""""1"""

命令名称:

新建(&N)。

点击执行的命令:

COM接口使用DMxDrawX::RegistUserCustomCommand注册命令。

图标索引字符串:

IDB_NEW_BITMAP。

资源文件名:

1. 为空取默认资源文件名,该名称需要去掉控件版本号如:MxDraw52.dll写成MxDraw.dll,控件会根据具体情况加上这个版本号。

2. 资源文件如是local:开头,表示是一个本地bmp文件,如:取mytoolbar.bmp做工具按钮图标:local:mytoolbar.bmp

比如:菜单图标从本地bmp文件加载:

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

3. 资源文件如是web:开头,表示是一个网络服务器上的bmp文件,如:取mytoolbar.bmp做工具按钮图标: web:mytoolbar.bmp

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

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

命令提示字符串:


为空。

命令ID:

指定菜单点击后响应的命令事件id,如不为空,可以在CAD控件的命令执行事件中响应菜单点击事件: ImplementCommandEvent。

ID类型:

目前CAD控件内部使用,一般为空。

比如:菜单图标从本地bmp文件加载:

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

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

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

从指定菜单文件加载

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

帮助如下图:

iface.png

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

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

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

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

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

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

显示或隐藏菜单项

COM接口_DMxDrawX::HideMenuBarControl

例如:

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

JS代码:

function InitMxDrawX() {
    if (mxOcx) {
        if (!mxOcx.IsIniting()) 
        {
            clearInterval(mxtime);
            // 控件初始化完成,需要在启动做的事,在这里做

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

在菜单栏添加一个按钮

1、新建菜单定义文件

新建一个文本文件将后缀名改为mnu(例如mxcad.mnu,此文件可以用记事本打开),文本里面的内容如下:

定义一个菜单按钮,按钮名为自定义新建,图标可以从服务器上加载(从服务器上加载写为web:mytoolbar.bmp),也可以从本地加载(从本地加载写为local:mytoolbar.bmp,本示例图标从本地上加载),图标名为mytoolbar.bmp,按钮点击执行命令,命令id为100。

// 菜单条文件头说明.
// "文件类型字符串" "资源文件名" "透明颜色" "位置,可以是:top,left,bottom,right" "是否可以浮动,Y \N "
"MxDrawMenuBarFile" "MxDraw.dll" (214 211 206) "top" "主菜单" "Y"

// 菜单内容说明
// "命令名称"  "命令" "图标索引字符串" "资源文件名" "命令提示字符串" "命令ID"  "ID类型" 
"POPMENUS" "文件(&F)"
"自定义新建(&N)1" "" "IDB_NEW_BITMAP" "local:mytoolbar.bmp"   "" "100" "ID_NEW_BUTTOM"
"自定义新建(&N)2" "" "IDB_NEW_BITMAP" "local:mytoolbar.bmp"   "" "100" "ID_NEW_BUTTOM"
"自定义新建(&N)3" "" "IDB_NEW_BITMAP" "local:mytoolbar.bmp"   "" "100" "ID_NEW_BUTTOM"
"新建(&N)" "Mx_New" "IDB_NEW_BITMAP" "MxEdit.mrx"  "" "" "ID_NEW_BUTTOM"
"打开(&O)" "Mx_OpenMxg" "IDB_OPENMXG_BITMAP" "" "" "" "ID_OPEN_BUTTOM"
"打开DWG文件(&M)" "OpenDwg" "IDB_OPENDWG_BITMAP" "" "" ""  "ID_OPENDWG_BUTTOM"
"SEPARATOR"
"最近文件(&X)" "Mc_Empty" "" "" "" "" "ID_FILE_MRU_FILE1"
"SEPARATOR"
"退出(&X)" "Mc_Empty" "" "" "" "" "ID_APP_EXIT"
"POPMENUE"

“//”是文件中的注释

文件中后面每行代表一个菜单项

"POPMENUS" "文件(&F)",表示一个弹出菜单开始

"POPMENUE" 表示弹出菜单的结束

将图标文件mytoolbar.bmp和菜单定义文件mxcad.mnu放到MxDraw52\Bin\vc100目录下。

L%XVY98]%IJ)ED~3~NWJS{N.png

2、若需要图标从服务器上面加载,需要把图标文件和菜单定义文件上传到服务器

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

3、Js程序里引用菜单

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

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

[SZP(~)G{0MWJ`~4]W6JPSU.png

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

function DoCommandEventFunc(iCmd)
{
    if (iCmd == 100) {
        //该函数在mxcustom.js中 
        alert("菜单按钮点击");
}
}
document.getElementById("MxDrawXCtrl").ImplementCommandEventFun = DoCommandEventFunc;

效果如下:

mnuebar.png

右键弹出菜单

CAD控件支持鼠标右键弹出菜单,菜单的文件格式和前面的主菜单文件格式一样。 详细参考例子,samples\ie\iedemoTest.htm

COM接口DMxDrawX::TrackPopupMenu

在B/S模式下,下面一步一步的说明如何支持该功能:

1、新建菜单定义文件

新一个文本文件: mxpop.mnu,内容如下:

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

"MxDrawMenuBarFile" "MxDraw.dll" (214 211 206) "top" "主菜单" "Y"
"POPMENUS" "文件(&F)"
"MyMenuButtonName(&N)"  ""  ""  "web:mytoolbar.bmp"  "" "99"
"POPMENUE"

2、把文件上传到服务器

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

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

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

document.getElementById("MxDrawXCtrl").ImplementMouseEventFun = MouseEvent;
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、响应命令执行事件,如下:

function DoCommandEventFunc(iCmd)
{
    if (iCmd == 99) {
        //该函数在mxcustom.js中 
        alert("菜单按钮点击");
}
}
document.getElementById("MxDrawXCtrl").ImplementCommandEventFun = DoCommandEventFunc;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文