- MxDraw 云图
- 快速入门
- 前端 mxdraw 和 mxcad 库预览编辑图纸
- 后台使用 Node.js 调用梦想 API
- CAD 与 GIS 集成说明
- 梦想云图 Node.JS 服务
- iOS 开发
- 安卓开发
- 网页 CAD 开发
- 网页快速入门 aspaps.netphpjava
- 图形数据库
- 参数化绘图
- 交互绘图
- 选择集
- 扩展数据
- 自定义实体
- 自定义命令
- 光栅图处理
- 图面搜索
- 控件事件
- 打印控制
- 界面控制
- COM 开发
- 视频教程
- VB 快速入门
- Delphi 快速入门
- CSharp 快速入门
- java 快速入门
- QT 快速入门
- 易语言快速入门
- Powerbuilder 快速入门
- wpf 控件入门
- 图形数据库
- 参数化绘图
- 交互绘图
- 选择集
- 扩展数据
- 自定义命令
- 自定义实体
- 打印控制
- 控件事件
- 图面搜索
- 光栅图处理
- 界面控制
- C++ 开发
- C++ bulider 快速入门
- C++ 快速入门(VS2010)
- C++ 快速入门(com 接口)
- 图纸数据库
- 参数化绘图
- 交互绘图
- 选择集
- 扩展程序
- 扩展数据
- 自定义函数
- 自定义实体
- 光栅图处理
- 图面搜索
- 控件事件
- 界面控制
- 常见问题
- 试用技术服务申请
- 会员下载最新程序
- 备用下载
- 控件安装运行说明
- 控件最新更新
- 控件功能简介
- 控件图形数据库
- 控件界面控制
- 控件命令执行原理
- 控件系统变量说明
- 控件常见问题说明
- 修改对象属性
- 网页加载 CAD 图纸的两个方案
- MxDraw3D 控件
- 前端基础工程化知识
右键弹出菜单
用户需要右键弹出菜单,则需要响应鼠标事件,右键按下后,弹出菜单分为在命令下运行及在非命令下运行,具体介绍如下 :
1、新建菜单文件
新一个文本文件: mxpoptest.mnu,内容如下(此文件为在命令下运行菜单):
// 菜单条文件头说明. // "文件类型字符串" "资源文件名" "透明颜色" "位置,可以是:top,left,bottom,right" "MxDrawMenuBarFile" "MxDraw.dll" (214 211 206) "top" "弹出菜单2" // 菜单内容说明 // "命令名称" "命令" "图标索引字符串" "资源文件名" "命令提示字符串" "命令ID" "ID类型" "是否命令当着函数执行" "POPMENUS" "对象(&O)" "确定" "" "" "" "确定" "" "ID_OK_BUTTON" //"取消" "" "" "" "取消" "" "ID_CANCLE_BUTTON" "关键字" "" "" "" "关键字" "" "ID_KEYWORD_BUTTON" "SEPARATOR" "Test(&E)" "Test" "" "" "编辑文字" "55" "" "Y" "POPMENUE"
此处的关键字为命令行提示命令。
新一个文本文件: MxPopMenuEnt.mnu,内容如下(此文件为在非命令下运行点击实体菜单):
// 菜单条文件头说明. // "文件类型字符串" "资源文件名" "透明颜色" "位置,可以是:top,left,bottom,right" "MxDrawMenuBarFile" "MxDraw.dll" (214 211 206) "top" "弹出菜单2" // 菜单内容说明 // "命令名称" "命令" "图标索引字符串" "资源文件名" "命令提示字符串" "命令ID" "ID类型" "POPMENUS" "对象(&O)" "删除(&E)" "_Erase" "IDB_ERASE_BITMAP" "复制(&Y)" "_Copy" "IDB_COPY_BITMAP" "移动(&V)" "_Move" "IDB_MOVE_BITMAP" "旋转(&R)" "_Rotation" "IDB_ROTATION_BITMAP" "缩放(&L)" "_Scale" "IDB_SCALE_BITMAP" "SEPARATOR" "对象特性(&O)" "Mx_ShowProperties" "IDB_PROPERTY_BITMAP" "PropertyEditor.mrx" "SEPARATOR" "用户自加命令(&U)" "" "" "" "" "99" "POPMENUE"
新一个文本文件: MxPopMenu.mnu,内容如下(此文件为在非命令下运行无实体右击菜单):
// 菜单条文件头说明. // "文件类型字符串" "资源文件名" "透明颜色" "位置,可以是:top,left,bottom,right" "MxDrawMenuBarFile" "MxDraw.dll" (214 211 206) "top" "弹出菜单1" // 菜单内容说明 // "命令名称" "命令" "图标索引字符串" "资源文件名" "命令提示字符串" "命令ID" "ID类型" "POPMENUS" "弹出菜单1(&V)" "新建(&N)" "Mx_New" "IDB_NEW_BITMAP" "MxEdit.mrx" "" "" "ID_NEW_BUTTOM" "打开(&O)" "Mx_OpenMxg" "IDB_OPENMXG_BITMAP" "" "" "" "ID_OPEN_BUTTOM" "重画(&R)" "Re" "IDB_REGEN_BITMAP" "SEPARATOR" "实时缩放(&Z)" "ZoomR" "IDB_ZOOM_BITMAP" "SEPARATOR" "上一步" "ZoomP" "ID_PRVVIEW_BITMAP" "窗口缩放(&W)" "WindowZoom" "IDB_ZOOMW_BITMAP" "范围缩放(&E)" "ZoomE" "IDB_ZOOME_BITMAP" "视区平移(&P)" "P" "IDB_PAN_BITMAP" "视区旋转(&L)" "Mx_Plan" "IDB_PLAN_BITMAP" "MxEdit.mrx" "SEPARATOR" "鸟瞰(&D)" "DsViewer" "IDB_DSVIEWER_BITMAP" "放大镜(&M)" "MagnifyingGlass" "IDB_MAGNIFYINGCLASS_BITMAP" "SEPARATOR" "视区背景色(&C)" "_ViewColor" "IDB_VIEWCOLOR_BITMAP" "线重(&S)" "_ShowLineWeight" "IDB_LINEWEIGHT_BITMAP" "绘图模式(&A)" "_DrawModle" "IDB_DRAWMODLE_BITMAP" "全屏显示(&F)" "MxFullScreen" "IDB_FULLSCREEN_BITMAP" "SEPARATOR" "用户坐标系(&U)" "Mx_Ucs" "IDB_UCS_BITMAP" "MxEdit.mrx" "POPMENUE"
文件中第一行是菜单文件头,每列内容如下 :
文件类型字符串 | 资源文件名(后面菜单的图标默认从该dll中加载) | 图标的透明颜色 | 位置 | 菜单名 |
"MxDrawMenuBarFile" | "MxDraw.dll" | (214 211 206) | "top" | "弹出菜单" |
“//”是文件中的注释
文件中后面每行代表一个菜单项
"POPMENUS" "对象(&O)",表示一个弹出菜单开始
"POPMENUE" 表示弹出菜单的结束
"SEPARATOR" 表示弹出菜单的分割线
后面每列的内容如下:
命令名称 | 点击执行的命令 | 图标索引字符串 | 资源文件名 | 命令提示字符串 | "命令ID" | ID类型(目前控件内部使用,一般为空) |
"新建(&N)" | Mx_New | "IDB_NEW_BITMAP" | "" | "" | "" | "" |
命令名称:
新建(&N)。
点击执行的命令:
其它语言使用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类型:
目前控件内部使用,一般为空。
2、响应鼠标右键事件,弹出菜单
主要用到函数说明:
函数名:_DMxDrawX::TrackPopupMenu
在指定位置弹出一个菜单。详细说明如下:
参数 | 说明 |
---|---|
DOUBLE dX | 弹出菜单的位置X值,是文档坐标 |
DOUBLE dY | 弹出菜单的位置Y值,是文档坐标 |
sMenuFile | 菜单定义文件,支持http开头的网络路径 |
document.getElementById("MxDrawXCtrl").ImplementMouseEventFun = MouseEvent;
function MouseEvent(dX, dY, lType) { var mxOcx = document.getElementById("MxDrawXCtrl"); // 3表示鼠标右键按下 if(lType == 3) { // 右键按下 var ret = mxOcx.Call("Mx_IsRuningCommand", ""); var sStatuIsOK = ret.AtString(0); var sStatuIsintellisel = ret.AtString(1); if ((sStatuIsOK == "Ok") && (sStatuIsintellisel != "intellisel")){ // 在命令下运行. var sMenu = mxOcx.GetOcxAppPath() + "\\mxpoptest.mnu"; mxOcx.TrackPopupMenu(dX, dY, sMenu); // 设置1,表示鼠标事件,不再往下传递. mxOcx.SetEventRet(1); return; } else { // 非命令下运行 var filter = mxOcx.NewResbuf(); var ent = mxOcx.FindEntAtPoint(dX, dY, filter); var sPopMenu; if(ent != null) { mxOcx.ClearCurrentSelect(); mxOcx.AddCurrentSelect(ent.ObjectID,true,true); sPopMenu = mxOcx.GetOcxAppPath() + "\\MxPopMenuEnt.mnu" } else { sPopMenu = mxOcx.GetOcxAppPath() + "\\MxPopMenu.mnu" } mxOcx.TrackPopupMenu(dX, dY, sPopMenu); // 设置1,表示鼠标事件,不再往下传递. mxOcx.SetEventRet(1); } } }
3、响应命令执行事件,如下:
function DoCommandEventFunc(iCmd) { if (iCmd == 55) { alert("菜单按钮点击"); } }
4、运行效果如下:
当CAD控件视区无实体时用户右击效果:
当CAD控件视区有实体时用户右击实体效果:
当CAD控件在命令下运行时用户右击实体效果:
用户定义命令执行效果:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论