视频如下:
代码工程下载:
http://www.mxcad.net:2080/video/com_mxtoolbar.zip
一、工具栏定义文件
1、如何找到控件对应的mxt定义文件
1)首先找到文件夹(自己安装位置);MxDraw52\Bin\vc100:
2)然后选择打开一个exe可执行文件;
3)再找到对应文件具体所在位置(工具条文件与控件位置不一致时,修改文件针对控件是无效的);
4) mxt文件可通过记事本打开进行修改。
2、工具栏定义文件是什么
1)部分工具条定义;
2)文件中第一行是参数,工具条文件头信息;
如:("MxDrawToolBarFile" "MxDraw.dll" (214 211 206) "top" "常用工具" "Y")
3)通过mxt文件可修改工具栏,删除增加按钮,给增加的按钮添加自定义命令;
4)文件中后面每一行代表一个工具条按钮;
红色框各部分表示的含义:
5)如何删除:直接在文件夹把不需要的工具条文件删除,控件加载时就不会显示该工具条。
3、如何直接隐藏按钮
1)首先响应事件InitComplete;
2) 然后根据需要写入代码:如 直线和矩形按钮
private void axMxDrawX1_InitComplete(object sender, EventArgs e) { axMxDrawX1.HideToolBarControl("绘图工具", "绘线,绘矩形框", true, true); }
3) 编译运行,按钮被隐藏。
4、如何增加一个按钮
自定义按钮参考例子:samples\AspNet\AspNet\My-MxDraw-ToolBar.txt
1)用记事本打开mxt工具条文件;
2)添加按钮并保存如(“100”为ID,用作自定义命令);
("自定义打文件按钮" "自定义打文件按钮" "" "" "" "local:mytoolbar.bmp" "100")
3)输入自定义的命令(根据自身需求);例如
else if(100==e.iCommandId ) { MessageBox.Show("用户定义命令执行...."); }
4)编译运行---点击按钮---命令被执行。
5、COM接口
1)从指定文件加载:CAD控件默认是加载CAD控件程所在目录下的所有mxt文件,下面介绍如何显示指定加载工具文件。
COM接口: ToolBarFiles属性,它支持从服务器上加载工具文件,多个工具条文件用逗号隔开:
找到控件---属性--ToolbarFiles(可指定选择需要的mxt文件,也可加载所有的mxt文件,注意每一个文件要用逗号分开):
2)显示加载工具条文件:CAD控件支持在需要时,再动态加载工具条文件,接口说明如下:
COM接口: _DMxDrawX::LoadToolBar
视频如下:
代码工程下载:
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"
3)输入自定义的命令;例如隐藏菜单栏;
else if(100==e.iCommandId ) { axMxDrawX1.ShowMenuBar = isShow; isShow = !isShow; }
4)编译运行,点击新建按钮,命令被执行。
3、如何让控件一启动就隐藏某个按钮
1)首先响应事件InitComplete;
2)然后根据需要写入代码:例如隐藏新建和打开
private void axMxDrawX1_InitComplete(object sender, EventArgs e) { axMxDrawX1.HideMenuBarControl("新建(&N),打开(&O)", true); }
4)再编译运行,此时文件---新建、保存按钮直接被隐藏。
4、如何删除不需要的按钮及说明
1)如何删除:直接在文件夹把不需要的菜单栏文件删除,控件加载时就不会显示该工具条;
2)文件中第一行菜单文件头信息;
3) 文件中后面每一行代表一个菜单栏按钮;
4)通过mnu文件可修改菜单栏,删除增加按钮,给增加的按钮通过id添加自定义命令。
5、怎么修改控件默认的菜单文件
视频如下:
1)在安装位置找到打开MxDraw5.2Help;
2)双击打开,搜索“Iniset"找到_DMxDrawX::Iniset 数据 成员;
3)可看见序号60为指定菜单文件;
4)找到:正编辑的工程--控件属性--Iniset
5)如果想用mymxmenu.mnu文件代替默认文件(新建同理),如图(多个则用逗号分开);
6)此处两个文件不同之处如红框所示,更改后打开菜单栏文件显示则为图二。
图一:mxmenu.mnu文件
图二:mymxnenu.mnu文件
视频如下:
代码工程下载:
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,可以看见目录中是存在这三个菜单文件的;
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) 编译运行,即可弹出右键菜单