返回介绍

菜单栏

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

显示或隐藏接口

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

菜单栏文件

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

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

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

“//”是文件中的注释

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

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

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

后面每列的内容如下:

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

命令名称:

新建(&N)。

点击执行的命令:

C++使用acedRegCmds->addCommand注册命令。

其它语言使用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,如不为空,可以在控件的命令执行事件中响应菜单点击事件: ImplementCommandEvent。

ID类型:

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

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

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

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

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

从指定菜单文件加载

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

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

帮助如下图:

iface.png

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

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

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

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

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

C++MxDraw::ReLoadMenu
COM接口,它是自定义函数:MxDrawXCustomFunction::Mx_ReLoadMenu

C#代码,如下调用:

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

例如:

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

JS代码:

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

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

完整例子说明

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

1、新建菜单文件

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

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

"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程序里引用菜单

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

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

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

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

右键弹出菜单

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

弹出函数C++接口MxDraw::TrackPopupMenu
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 和您的相关数据。
    原文