用户需要右键弹出菜单,则需要响应鼠标事件,右键按下后,弹出菜单分为在命令下运行及在非命令下运行,具体介绍如下 :

一、新建菜单文件

1、新一个文本文件: mxpoptest.mnu,内容如下(此文件为在命令下运行菜单):

1

2

3

4

5

6

7

8

9

10

11

12

13

// 菜单条文件头说明.

// "文件类型字符串" "资源文件名" "透明颜色" "位置,可以是: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"

此处的关键字为命令行提示命令。

2、新一个文本文件: MxPopMenuEnt.mnu,内容如下(此文件为在非命令下运行点击实体菜单):

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

// 菜单条文件头说明.

// "文件类型字符串" "资源文件名" "透明颜色" "位置,可以是: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"

3、新一个文本文件: MxPopMenu.mnu,内容如下(此文件为在非命令下运行无实体右击菜单):

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

// 菜单条文件头说明.

// "文件类型字符串" "资源文件名" "透明颜色" "位置,可以是: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"

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

文件类型字符串 资源文件名(后面菜单的图标默认从该dll中加载) 图标的透明颜色 位置 菜单名
"MxDrawMenuBarFile" "MxDraw.dll" (214 211 206) "top" "弹出菜单"

“//”是文件中的注释

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

"POPMENUS" "对象(&O)",表示一个弹出菜单开始

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

"SEPARATOR" 表示弹出菜单的分割线

5、后面每列的内容如下:

命令名称 点击执行的命令 图标索引字符串 资源文件名 命令提示字符串 "命令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类型:目前控件内部使用,一般为空。

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

主要用到函数说明:_DMxDrawX::TrackPopupMenu

在指定位置弹出一个菜单。详细说明如下:

参数 说明

DOUBLE dX

弹出菜单的位置X值,是文档坐标

DOUBLE dY

弹出菜单的位置Y值,是文档坐标

sMenuFile

菜单定义文件,支持http开头的网络路径

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

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);

    }

}

三、响应命令执行事件

如下:

1

2

3

4

5

6

7

function DoCommandEventFunc(iCmd)

{

    if (iCmd == 55) {

        

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

}

}

四、运行效果如下

1、当CAD控件视区无实体时用户右击效果:

2、当CAD控件视区有实体时用户右击实体效果:

3、当CAD控件在命令下运行时用户右击实体效果:

4、用户定义命令执行效果:

梦想CAD控件网页版右键弹出菜单相关推荐

  1. 梦想CAD控件安卓版选择集

    在本示例中将使用构造选择集对被过滤对象进行过滤,该类封装了选择集及其处理函数,支持如下过滤条件. 参数类型 类型 RTDXF0 TEXT 文字 MTEXT 多行文字 CIRCLE 圆 ARC 圆弧 L ...

  2. silverlight创建新的控件——一个简单的弹出菜单

    照旧,直接贴代码 <UserControlxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" ...

  3. 梦想CAD控件com接口界面控制右键弹出菜单

    用户需要右键弹出菜单,则需要响应鼠标事件,右键按下后,弹出菜单分为在命令下运行及在非命令下运行,具体介绍如下(C#语言参考例子:"samples\CSharpRightKeyMenu\CSh ...

  4. 梦想CAD控件(网页CAD插件) 2022.12.12更新

    梦想CAD控件(网页CAD插件) 2022.12.12更新 试用下载:https://www.mxdraw.com/ndetail_30238.html 1. 修改CAD点对象,不能看到闪烁效果问题 ...

  5. EngineerCMS利用梦想CAD控件MXdraw进行图纸在线编辑,保存到服务器

    梦想控件网页版开发 浏览器要用梦想控件官方提供的企业版chrome,这个是官方利用chrome开源改造后支持ocx控件的浏览器. 浏览器打开dwg文件的链接,调用梦想控件打开图纸,进行修改后,可保存到 ...

  6. 梦想CAD控件COM接口光栅图处理

    在CAD操作过程中,我们在设计绘图时,光栅图像也就是我们常说的图片,应用非常广泛,在CAD中可以直接插入光栅图像,并且可以对光栅图像进行裁剪.透明度调整等一些操作,在网页可以快速实现我们所需功能. 一 ...

  7. wpf 代码获取contextmenu_[C#] 转:在WPF里面获取右键弹出菜单(ContextMenu)的鼠标点击源(Owner)控件...

    WPF的ContextMenu没有类似WinForm里面ContextMenu.SourceControl的概念,但是你可以通过ContextMenuService的GetPlacementTarge ...

  8. 梦想CAD控件 2021.12.06更新

    梦想CAD控件 2021.12.06更新 下载地址:https://www.mxdraw.com/ndetail_30180.html 修改得到cad.dwg预览图片,如果图片是png格式,读取失败的 ...

  9. 梦想CAD控件图块COM接口知识点

    梦想CAD控件图块COM接口知识点 图块是将多个实体组合成一个整体,并给这个整体命名保存,在以后的图形编辑中图块就被视为一个实体.一个图块包括可见的实体如线.圆.圆弧以及可见或不可见的属性数据.图块的 ...

最新文章

  1. Winform中实现根据CPU和硬盘获取机器码
  2. 范式青春er,寻找同行的你!
  3. iOS之深入解析依赖注入的原理与应用
  4. Excel 2016双击无法打开文件的解决办法
  5. Python 中的range,以及numpy包中的arange函数
  6. 牛客16502 螺旋矩阵
  7. 内向的人可以做产品经理吗?
  8. 11.FreeRTOS学习笔记-内存管理
  9. 大学生起诉小米获赔流量费1元
  10. Nginx正确记录post日志的方法
  11. docker 监控容器的cpu、内存、网络、io情况
  12. gif分解合成_如何通过分解和合成使复杂的问题更容易
  13. 朗强科技讲解:HDMI分配器的作用与使用方法
  14. 数据结构c语言版ppt答案,《数据结构(C语言版)》习题答案.ppt
  15. 台式计算机连不上网,为什么台式电脑连不上wifi
  16. 例题6-21 uva506 System Dependencies 模拟
  17. FANUC机器人Config系统配置中各项参数的功能描述及设定
  18. 8.10 第七场 Smzzl with Tropical Taste
  19. 申请支付宝当面付应用
  20. 计算机职称证的用途,计算机软考高项过了有什么用处

热门文章

  1. java将字符串放置到剪切板
  2. 干涉仪测向技术matlab算法仿真,相位干涉仪测向算法的Simulink仿真
  3. 为 FTP7 RTM 配置 Windows Firewall
  4. 【阅读】Leaf——美团点评分布式ID生成系统
  5. 阿里云视频直播PHP-SDK
  6. 《人工智能》 柴玉梅,张坤丽 编
  7. eqq for shell
  8. 天津大学计算机网络专业排名,2019计算机考研天津大学先进网络技术与应用重点实验室简介...
  9. “译见”跨语言大数据渠道生态 上亿市场即将开启
  10. Github上最热门的开源项目排行