LOGO
帮助文档
旧版文档
工具条修改讲解菜单栏修改讲解右键弹出菜单
工具条修改讲解

视频如下:

代码工程下载:

http://www.mxcad.net:2080/video/com_mxtoolbar.zip

一、工具栏定义文件

1、如何找到控件对应的mxt定义文件

  1)首先找到文件夹(自己安装位置);MxDraw52\Bin\vc100:

图片1.png

  2)然后选择打开一个exe可执行文件;

图片2.png

  3)再找到对应文件具体所在位置(工具条文件与控件位置不一致时,修改文件针对控件是无效的);

图片3.png

  4) mxt文件可通过记事本打开进行修改。

2、工具栏定义文件是什么

  1)部分工具条定义;

34.png

  2)文件中第一行是参数,工具条文件头信息;

     如:("MxDrawToolBarFile" "MxDraw.dll" (214 211 206) "top" "常用工具" "Y")

35.png

  3)通过mxt文件可修改工具栏,删除增加按钮,给增加的按钮添加自定义命令;

  4)文件中后面每一行代表一个工具条按钮;

41.png

     红色框各部分表示的含义:

37.png

  5)如何删除:直接在文件夹把不需要的工具条文件删除,控件加载时就不会显示该工具条。

3、如何直接隐藏按钮

  1)首先响应事件InitComplete;

 微信图片_20201210095510.png

  2) 然后根据需要写入代码:如   直线和矩形按钮

 private void axMxDrawX1_InitComplete(object sender, EventArgs e) 
 {   
   axMxDrawX1.HideToolBarControl("绘图工具", "绘线,绘矩形框", true, true);                
  }

  3) 编译运行,按钮被隐藏。

                        图片10.png                                图片11.png

4、如何增加一个按钮

     自定义按钮参考例子:samples\AspNet\AspNet\My-MxDraw-ToolBar.txt

  1)用记事本打开mxt工具条文件;

45.png

  2)添加按钮并保存如(“100”为ID,用作自定义命令);

("自定义打文件按钮" "自定义打文件按钮" "" "" "" "local:mytoolbar.bmp" "100")

46.png

  3)输入自定义的命令(根据自身需求);例如

 else if(100==e.iCommandId )
 {     
    MessageBox.Show("用户定义命令执行....");   
  }

  4)编译运行---点击按钮---命令被执行。                                                                          

5、COM接口

  1)从指定文件加载:CAD控件默认是加载CAD控件程所在目录下的所有mxt文件,下面介绍如何显示指定加载工具文件。

        COM接口: ToolBarFiles属性,它支持从服务器上加载工具文件,多个工具条文件用逗号隔开:

      图片21.png

         找到控件---属性--ToolbarFiles(可指定选择需要的mxt文件,也可加载所有的mxt文件,注意每一个文件要用逗号分开):

图片22.png

  2)显示加载工具条文件:CAD控件支持在需要时,再动态加载工具条文件,接口说明如下:

        COM接口: _DMxDrawX::LoadToolBar

23.png

菜单栏修改讲解

视频如下:

代码工程下载:

http://www.mxcad.net:2080/video/com-mxmenu.zip

二、菜单栏定义文件

1、如何找到控件对应的mnu定义文件

  1)找到安装的文件目录:MxDraw52\Bin\vc100;

  2)选择打开一个exe可执行文件;

  3)找到对应文件具体所在位置(菜单栏文件与控件位置不一致时,修改文件针对控件是无效的);

  4)mnu文件可通过记事本打开进行修改。

2、如何新增一个按钮

  1)用记事本打开mxmenu.mnu文件(所有的mnu文件都是菜单栏文件);

  2)添加按钮并保存(“100”为ID,用作自定义命令);

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

图片1.png  3)输入自定义的命令;例如隐藏菜单栏;

else if(100==e.iCommandId ) 
 {    axMxDrawX1.ShowMenuBar = isShow; 
      isShow = !isShow;                          
    }

  4)编译运行,点击新建按钮,命令被执行。                                                                 

3、如何让控件一启动就隐藏某个按钮

  1)首先响应事件InitComplete;

微信图片_20201210095510.png

  2)然后根据需要写入代码:例如隐藏新建和打开

private void axMxDrawX1_InitComplete(object sender, EventArgs e)       
 {    
      axMxDrawX1.HideMenuBarControl("新建(&N),打开(&O)", true);     
  }

  4)再编译运行,此时文件---新建、保存按钮直接被隐藏。

4、如何删除不需要的按钮及说明

  1)如何删除:直接在文件夹把不需要的菜单栏文件删除,控件加载时就不会显示该工具条;

  2)文件中第一行菜单文件头信息;

图片4.png

  3) 文件中后面每一行代表一个菜单栏按钮;

图片5.png

  4)通过mnu文件可修改菜单栏,删除增加按钮,给增加的按钮通过id添加自定义命令。

5、怎么修改控件默认的菜单文件

视频如下:

  1)在安装位置找到打开MxDraw5.2Help;

图片1.png

  2)双击打开,搜索“Iniset"找到_DMxDrawX::Iniset 数据 成员;

图片2.png

  3)可看见序号60为指定菜单文件;

图片3.png

  4)找到:正编辑的工程--控件属性--Iniset

微信截图_20201214145546.png

  5)如果想用mymxmenu.mnu文件代替默认文件(新建同理),如图(多个则用逗号分开);

微信截图_20201214145604.png

微信截图_20201214145623.png

  6)此处两个文件不同之处如红框所示,更改后打开菜单栏文件显示则为图二。

图一:mxmenu.mnu文件

图片7.png

图二:mymxnenu.mnu文件

图片8.png


右键弹出菜单

视频如下:

代码工程下载:

http://www.mxcad.net:2080/video/com-pop-up menu.zip

三、右键弹出菜单

1、新建三个mnu文件

  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"

  2)第二个文件: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"

  3)第三个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"

  4)我们打开文件夹MxDraw52\Bin\vc100,可以看见目录中是存在这三个菜单文件的;

图片7.png


  5)不需要的文件可以在目录中直接删除,或者在记事本中添加修改。

2、如何弹出

  1)响应命令执行事件,如下:

private void axMxDrawX1_ImplementCommandEvent(object sender, AxMxDrawXLib._DMxDrawXEvents_ImplementCommandEventEvent e)
        {
            if(e.iCommandId == 99)
            {
                MessageBox.Show("用户定义命令执行....");
            }
             
         }

  2)响应鼠标右键事件,弹出菜单;

private void axMxDrawX1_MouseEvent(object sender, AxMxDrawXLib._DMxDrawXEvents_MouseEventEvent e)
        {
            if (e.lType == 3)
            {
                // 右键按下
                string sCmd = ""  ;
                if (axMxDrawX1.IsRuningCommand(ref sCmd))
                {
                    // 在命令下运行.
                    String sMenu = axMxDrawX1.GetOcxAppPath() + "\\mxpoptest.mnu";
                    axMxDrawX1.TrackPopupMenu(e.dX, e.dY, sMenu);
                    // 设置1,表示鼠标事件,不再往下传递.
                    axMxDrawX1.SetEventRet(1);
 
                }
                else
                {
                    // 非命令下运行
                    MxDrawXLib.MxDrawResbuf filter = new MxDrawXLib.MxDrawResbuf();
                    MxDrawXLib.MxDrawEntity ent = (MxDrawXLib.MxDrawEntity)axMxDrawX1.FindEntAtPoint(e.dX, e.dY, filter);
 
                    String sPopMenu;
                    if(ent != null)
                    {
                        axMxDrawX1.ClearCurrentSelect();
                        axMxDrawX1.AddCurrentSelect(ent.ObjectID,true,true);
 
                        sPopMenu = axMxDrawX1.GetOcxAppPath() + "\\MxPopMenuEnt.mnu";
                    }
                    else
                    {
                        sPopMenu = axMxDrawX1.GetOcxAppPath() + "\\MxPopMenu.mnu";
                    }
 
 
                    axMxDrawX1.TrackPopupMenu(e.dX, e.dY, sPopMenu);
                    // 设置1,表示鼠标事件,不再往下传递.
                    axMxDrawX1.SetEventRet(1);
                }
 
            }
        }

  3) 编译运行,即可弹出右键菜单