更新时间:2015 年08 月24 日
界面控制说明
目录
1.1 说明: ......................................................................................................................................... 4
1.2 菜单栏 ......................................................................................................................................... 4
1.2.1 显示或隐藏接口 ............................................................................................................. 4
1.2.2 菜单栏文件 .................................................................................................................... 5
1.2.3 从指定菜单文件加载 ..................................................................................................... 6
1.2.4 禁用或启用菜单项 ......................................................................................................... 6
1.2.5 显示或隐藏菜单项 ......................................................................................................... 7
1.2.6 完整例子说明................................................................................................................. 7
1.2.7 右键弹出菜单................................................................................................................. 8
1.3 工具栏 ......................................................................................................................................... 9
1.3.1 显示或隐藏接口 ............................................................................................................. 9
1.3.2 显示或隐藏工具条上某个按钮 .................................................................................... 10
1.3.3 禁用工具条上某个按钮................................................................................................ 10
1.3.4 工具条文件 .................................................................................................................. 10
1.3.5 从指定文件加载 ........................................................................................................... 12
1.3.6 显示加载工具条文件 ................................................................................................... 13
1.3.7 完整例子说明............................................................................................................... 14
1.4 标尺栏 ....................................................................................................................................... 15
1.5 属性栏 ....................................................................................................................................... 15
1.6 命令栏 ....................................................................................................................................... 16
1.7 模型栏 ....................................................................................................................................... 17
1.8 状态栏 ....................................................................................................................................... 17
1.8.1 显示进度条 .................................................................................................................. 17
1.8.2 状态栏上按钮调用 ....................................................................................................... 17
1.8.3 坐标设置事件............................................................................................................... 18
1.8.4 进度条事件 .................................................................................................................. 18
1.8.5 状态栏的梦想Logo ...................................................................................................... 18
1.9 视区 ........................................................................................................................................... 18
1.9.1 设置视区背景色 ........................................................................................................... 18
1.9.2 设置视区背景色为渐变色 ............................................................................................ 19
1.9.3 设置水印背景............................................................................................................... 19
1.9.4 绘光栅图到背景. .......................................................................................................... 20
1.9.5 把DWG 文件当着背景导入 ........................................................................................ 21
1.9.6 对象夹点显示颜色 ....................................................................................................... 22
1.10 光标控制 ............................................................................................................................... 22
1.10.1 自定义设置光标 ........................................................................................................... 23
1.10.2 设置默认缺省时光标 ................................................................................................... 23
1.10.3 光标位置 ...................................................................................................................... 24
1.11 坐标图标 ................................................................................................................................... 24
1.12 浏览模式 ............................................................................................................................... 24
M X D R A W 梦想绘图控件教程V 5 . 2
3
1.13 动态提示 ............................................................................................................................... 25
M X D R A W 梦想绘图控件教程V 5 . 2
4
1.1 说明:
控件界面上所有元素都可以控制显示或隐藏,下面逐一介绍,控件界面上的元素位置如下图:
1.2 菜单栏
1.2.1 显示或隐藏接口
C++接口:MxDraw::ShowMenuBar
COM 接口:ocx的属性, ShowModelBar,例如JS语言,隐藏菜单栏:
<param name="ShowMenuBar" value="0">
M X D R A W 梦想绘图控件教程V 5 . 2
5
1.2.2 菜单栏文件
控件MxDraw52.dll所在目录下,所有的mnu文件,都是菜单定义文件,它是文本文件,用记事
本打开编辑,格式如下:
“//”是文件中的注释。
文件中第一行是菜单文件头,每列内容如下 :
文件类型字符串 资源文件名
注:后面菜单的图
标默认从该dll中
加载
图标的透明颜色 位置,可以是:
top,left,bottom,right
菜单名 是否
可以
浮动,
Y \N
"MxDrawMenuBarFile" "MxDraw.dll" (214 211 206) "top" "主菜单" "Y"
文件中后面每行代表一个菜单项,
"POPMENUS" "文件(&F)",表示一个弹出菜单开始
"POPMENUE" 表示弹出菜单的结束
后面每列的内容如下:
命令名称 点击执行的命令
C++使用acedRegCmds->addCommand注
册命令
其它语言使用
DMxDrawX::RegistUserCustomCommand
注册命令
图标索引字符串
资源文件名
1. 为空取默认资源文件名
该名称,需要去掉控件版本号如:
MxDraw52.dll写成MxDraw.dll,控件会根据
具体情况加上这个版本号
2.资源文件如是local:开头,表示是一个本
地bmp文件,如:取mytoolbar.bmp做工具按钮
图标:
local:mytoolbar.bmp
3.资源文件如是web:开头,表示是一个网络
服务器上的bmp文件,如:取mytoolbar.bmp
做工具按钮图标:
web:mytoolbar.bmp
"新建(&N)" Mx_New "IDB_NEW_BITMAP" ""
继续上边
命令提示字符串 "命令ID"
指定菜单点击后响应的命令事件id,如不为空,可以在控件的命
令执行事件中响应菜单点击事件: ImplementCommandEvent
ID类型
目前控件内部使用,一般为空
"" "1" ""
比如:菜单图标从本地bmp文件加载:
"自定义新建(&N)" "Mx_New" "IDB_NEW_BITMAP" "local:mytoolbar.bmp"
比如:菜单图标从服务器bmp文件加载,bmp文件与菜单文件在同一个服务器目录中:
"自定义新建(&N)" "Mx_New" "IDB_NEW_BITMAP" "web:mytoolbar.bmp"
M X D R A W 梦想绘图控件教程V 5 . 2
6
1.2.3 从指定菜单文件加载
C++接口:
MXDRAWOCXHANDLE MxDraw::CreateMxDraw 第五个参数表示菜单加载文件
COM接口:
Iniset属性,MenuFile=mymenu.mun,它支持从服务器上加载菜单文件
帮助如下图:
如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");
1.2.4 禁用或启用菜单项
C++接口函数:
MxDraw::EnableMenuBarControl
M X D R A W 梦想绘图控件教程V 5 . 2
7
1.2.5 显示或隐藏菜单项
C++接口:MxDraw:: HideMenuBarControl
COM 接口:_DMxDrawX::HideMenuBarControl
例如:
mxocx.HideToolBarControl(true,_T("新建(&N) , 打开(&O));
1.2.6 完整例子说明
在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程序里引用菜单
M X D R A W 梦想绘图控件教程V 5 . 2
8
菜单文件放在当前网页目录下
<param name="Iniset" value="MenuFile=./mxcad.mnu">
4) 响应命令执行事件,如下:
function DoCommandEventFunc(iCmd)
{
if (iCmd == 99) {
//该函数在mxcustom.js中
alert("菜单按钮点击");
}
}
document.getElementById("MxDrawXCtrl").ImplementCommandEventFun = DoCommandEventFunc;
1.2.7 右键弹出菜单
控件支持鼠标右键弹出菜单,菜单的文件格式和前面的主菜单文件格式一样。
详细参考例子,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) {
M X D R A W 梦想绘图控件教程V 5 . 2
9
// 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;
1.3 工具栏
1.3.1 显示或隐藏接口
显示或隐藏所有工具条
C++接口:MxDraw::ShowToolBars
COM 接口:ocx的属性, ShowToolBars,例如JS语言,隐藏工具条:
<param name="ShowToolBars" value="0">
显示或隐藏指定工具条, 工具条名称会在后面的工具条文件格式中说明
C++接口:MxDraw::ShowToolBar
M X D R A W 梦想绘图控件教程V 5 . 2
10
COM 接口:_DMxDrawX::ShowToolBar
1.3.2 显示或隐藏工具条上某个按钮
C++接口:MxDraw::HideToolBarControl
例如:VC代码,隐藏绘图工具栏上的绘线和绘矩形框按钮。
MxDraw::HideToolBarControl(m_hDrawOcx,_T("绘图工具"),_T("绘线,绘矩形框"));
COM 接口:_DMxDrawX::HideToolBarControl
例如:
mxocx.HideToolBarControl(_T("绘图工具"),_T("绘线,绘矩形框"),true,true);
1.3.3 禁用工具条上某个按钮
C++接口:MxDraw::EnableToolBarControl
例如禁用打印按钮:
MxDraw::EnableToolBarControl(m_hDrawOcx,_T("打印图形"),FALSE);
COM 接口:DMxDrawX::EnableToolBarButton
例如页中禁用打开按钮代码:
document.getElementById("MxDrawOcxCtrl").EnableToolBarButton("打开dwg文件",0);
1.3.4 工具条文件
控件MxDraw52.dll所在目录下,所有的mxt都是工具条定义文件,每个mxt文件就是一个工具
M X D R A W 梦想绘图控件教程V 5 . 2
11
条, 如下:
文件名 说明
MxDraw-ToolBar.mxt 常用工具条
MxDraw-ToolBar-Draw.mxt 绘图工具条
MxDraw-ToolBar-DrawParam.mxt 特性工具条
MxDraw-ToolBar-Edit.mxt 编辑工具条
MxDraw-ToolBar-ET.mxt 扩展工具条
把不需要的工具条文件删除,控件加载时就不会显示该工具条
它是文本文件,用记事本打开编辑,格式如下:
“//”是文件中的注释。
文件中第一行是工具条文件头信息,每列内容如下:
如:("MxDrawToolBarFile" "MxDraw.dll" (214 211 206) "top" "常用工具" "Y")
第几列 例程中的内容 说明
1 "MxDrawToolBarFile" 工具条文件标志字符串。
2 "MxDraw.dll" 工具条中按钮图片资源加载文件
注:后面图标默认从该dll中加载
3 (214 211 206) 在资源文件中,按钮图片的透明色
4 "top" 位置,可以是:top,left,bottom,right
5 "常用工具" 工具条名称
注:显示\隐藏函数会使用
6 "Y" 是否可以浮动,Y \N
文件中后面每行代表一个工具条按钮,
每列的内容如下:
如:("打开网上dwg文件" "打开网上dwg文件" "_OpenWebDwg" "IDB_OPENWEBDWG_BITMAP" ""
"" "" "Y")
第几列 例程中的内容 说明
1 "打开网上dwg文件" 命令名称
2 "打开网上dwg文件" 命令提示字符串
3 _OpenWebDwg 命令名
注: C++使用McEdCommandStack :: addCommand增加,例
如下:
acedRegCmds()->addCommand(_T("SysCmd"),
_T("OpenDwg"), _T("OpenDwg"), 1, OpenDwg);
COM接口:DMxDrawX::RegistUserCustomCommand注册命令
4 " IDB_OPENWEBDWG_BITMAP " 控钮在资源文件中的位图ID
5 "" ID类型
注:控件内部使用,用户填空串
6 "" 资源文件名
1. 为空取默认资源文件名
该名称,需要去掉控件版本号如:
MxDraw52.dll写成MxDraw.dll,控件会根据具体情况加上这
M X D R A W 梦想绘图控件教程V 5 . 2
12
个版本号
2.资源文件如是local:开头,表示是一个本地bmp文件,如:
取mytoolbar.bmp做工具按钮图标:
local:mytoolbar.bmp
3..资源文件如是web:开头,表示是一个网络服务器上的
bmp文件,如:取mytoolbar.bmp做工具按钮图标:
web:mytoolbar.bmp
7 "" "命令ID"
注:
定菜单点击后响应的命令事件id,如不为空,可以在控件的
命令执行事件中响应菜单点击事件:
ImplementCommandEvent
8 "Y" 没有命定义时,是否不要加载工具按钮
自定义按钮参考例子:samples\AspNet\AspNet\My-MxDraw-ToolBar.txt
比如:按钮图标从本地bmp文件加载:
("自定义打文件按钮" "自定义打文件按钮" "Mx_OpenMxg" "" "" "web:mytoolbar.bmp")
比如:按钮图标从服务器bmp文件加载,bmp文件与工具条文件在同一个服务器目录中:
("自定义打文件按钮" "自定义打文件按钮" "Mx_OpenMxg" "" "" "web:mytoolbar.bmp")
1.3.5 从指定文件加载
控件默认是加载控件程所在目录下的所有mxt文件,下面介绍如何显示指定加载工具文件
C++接口:
MXDRAWOCXHANDLE MxDraw::CreateMxDraw 第四个参数指定工具条加载文件
COM接口:
ToolBarFiles 属性,它支持从服务器上加载工具文件,多个工具条文件用逗号隔开
帮助如下图:
M X D R A W 梦想绘图控件教程V 5 . 2
13
如Js语言从服务器加载工具条文件, 工具条文件相对于当前网页:
<param name=" ToolBarFiles"
value=" ./My-MxDraw-ToolBar.txt,MxDraw-ToolBar-DrawParam.mxt,MxDraw-ToolBar-Draw.mxt,MxDraw-ToolB
ar-Edit.mxt">
暂不加载工具条文件,如下:
<param name=" ToolBarFiles " value=" Empty.mxt">
1.3.6 显示加载工具条文件
控件支持在需要时,再动态加载工具条文件,接口说明如下:
C++接口:
MxDraw::LoadToolBar
例如:
void CTestDlg::OnBnClickedLoadtoolbarButton1()
{
CFileDialog openDlg(TRUE,_T("mxt"),NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
_T("mxt(*.mxt) | *.mxt||"),AfxGetApp()->GetMainWnd());
if(openDlg.DoModal() == IDOK)
{
CString sToolBarFilePath = openDlg.GetPathName();
M X D R A W 梦想绘图控件教程V 5 . 2
14
MxDraw::LoadToolBar(m_hDrawOcx,sToolBarFilePath);
}
}
COM接口:
_DMxDrawX::LoadToolBar
帮助文件抓图:
1.3.7 完整例子说明
在B/S模式下,一步一步的说一下,如何用户自定义工具条,并响应点击事件。
详细例子可以参考samples\AspNet\AspNet.sln, samples\AspNet\ My-MxDraw-ToolBar.txt
1) 新建菜单文件
新一个文本文件: My-MxDraw-ToolBar.txt,内容如下:
定一个按钮,按钮名为“自定义按钮“,图标是服务器上加载,图标名为mytoolbar.bmp,按钮点
击执行命令,命令id为99
("MxDrawToolBarFile" "MxDraw.dll" (214 211 206) "top" "MyTest工具" "Y")
("自定义按钮" "自定义按钮" "" "" "" " web:mytoolbar.bmp " "100")
2) 把文件上传到服务器
把My-MxDraw-ToolBar.txt, mytoolbar.bmp文件放到服务器上,并放在同一个目录下,保
证能直接从ie中访问。
3) Js程序里引用工具条
M X D R A W 梦想绘图控件教程V 5 . 2
15
工具条文件放在当前网页目录下
<param name="ToolBarFiles" value="./ My-MxDraw-ToolBar.txt ">
4) 响应命令执行事件,如下:
function DoCommandEventFunc(iCmd)
{
if (iCmd == 100) {
//该函数在mxcustom.js中
alert("工具条按钮点击");
}
}
document.getElementById("MxDrawXCtrl").ImplementCommandEventFun = DoCommandEventFunc;
1.4 标尺栏
显示或隐藏接口:
C++: MxDraw::ShowRulerWindow
COM接口: DMxDrawX::ShowRulerWindow
例如隐藏标尺栏,JS:
< param name="ShowRulerWindow" value="0">
1.5 属性栏
显示或隐藏接口:
C++: MxDraw::ShowPropertyEditWindow
COM接口: DMxDrawX::ShowPropertyWindow
例如显示属性栏,JS:
< param name="ShowPropertyWindow" value="1">
属性栏功能,默认是没有启用的,需要在控件启动时,初始化启用
C++: MxDraw::EnablePropertyEditWindow
例如,在App::InitInstance中启用
BOOL CTestDlgApp::InitInstance()
{
M X D R A W 梦想绘图控件教程V 5 . 2
16
// ?
MxDraw::InitMxDraw(true,_T("MxDraw-Edit.ini"));
MxDraw::SetTheme(MxDraw::themeWhidbey);
MxDraw::EnableUndo(true);
MxDraw::EnableOleShow(true);
MxDraw::EnableViewModifyNotify(true);
MxDraw::EnableDeskCommandWindow(true);
MxDraw::ShowCommandWindow(NULL,TRUE);
MxDraw::EnablePropertyEditWindow(true);
//?
}
COM: IniSet="EnablePropertyWindow=Y"
说明抓图:
例如,Js调用,启用属性窗口功能,但不显示
<param name="Iniset" value="LoadMrx=PropertyEditor,EnablePropertyWindow=Y">
1.6 命令栏
显示或隐藏接口:
C++: MxDraw::ShowCommandWindow
COM接口: _DMxDrawX::ShowCommandWindow
例如隐藏命令栏,JS:
M X D R A W 梦想绘图控件教程V 5 . 2
17
< param name="ShowCommandWindow" value="0">
1.7 模型栏
显示或隐藏接口:
C++: MxDraw::ShowModelBar
COM接口: _DMxDrawX::ShowModelBar
例如隐藏模型栏,JS:
< param name="ShowModelBar" value="0">
1.8 状态栏
显示或隐藏接口:
C++: MxDraw::ShowModelBar
COM接口: _DMxDrawX::ShowStatusBar
例如隐藏模型栏,JS:
< param name="ShowStatusBar" value="0">
1.8.1 显示进度条
COM接口:
设置进度条显示范围: _DMxDrawX::SetStatusBarProgressMeter
设置进度条显示位置: _DMxDrawX::SetStatusBarProgressMeterPos
隐藏进度条: DMxDrawX::RestoreStatusBar
C++接口
设置进度条显示范围: Mx::mcedSetStatusBarProgressMeter
设置进度条显示位置: Mx::mcedSetStatusBarProgressMeterPos
设置进度条走一步: Mx::mcedSetStatusBarProgressStep
隐藏进度条: Mx::mcedRestoreStatusBar
1.8.2 状态栏上按钮调用
参考“梦想控件20-常用系统变量说明.doc”文档,状态栏上的捕捉,正交等功能如何在自己的
程序中设置.
M X D R A W 梦想绘图控件教程V 5 . 2
18
1.8.3 坐标设置事件
状态上的坐标被修改后,会触发一个通知事件,可以帮助用户写自定义状态栏.
COM接口: DMxDrawXEvents::SetTipCoord
帮助文档抓图:
1.8.4 进度条事件
进度条显示时,会触发设置进度条事件:
COM接口: DMxDrawXEvents::SetProgressBar
1.8.5 状态栏的梦想Logo
控件试用版本程序,总是会显示该Logo,正式程序就会自动去掉该Logo.
1.9 视区
1.9.1 设置视区背景色
C++: MxDraw::SetViewColor
COM接口: _DMxDrawX::ViewColor
M X D R A W 梦想绘图控件教程V 5 . 2
19
例如: C#动态修改颜色.
axMxDrawX1.ViewColor = Color.FromArgb(255,255,66,0)
例如: JS,把背景色变成 红色= 123,绿色=55,蓝色=78
颜色值是由(0xFF FF FF)6位的16进制数据组成,分别代表示(0x红,绿,蓝),比如要设置颜
色: 红色= 123,绿色=55,蓝色=78的颜色,
123= 0x7B, 55=0x37, 78=0x4E
也就是0x7B 37 4E, 0x7B374E = 8075086
所以设置ViewColor =8075086
< param name="ViewColor" value="8075086">
1.9.2 设置视区背景色为渐变色
COM: IniSet="ViewGradientColor=RGB;标记"
设置背景为渐变色填充,RGB是填充的渐变色,标记为 0,不使用渐变填充颜色,1使用渐变填充
颜色。
C#如使用绿色渐变:
axMxDrawX1.Iniset = "ViewGradientColor=" + "255" + ";1";
axMxDrawX1.ViewColor = Color.FromArgb(10, 22, 200, 0);
C++: MxDraw::SetViewGradientColor
1.9.3 设置水印背景
COM: _DMxDrawX::Watermark
例如:设置文件名:d:\\mxcad.jpg,透明度为70,居中显示,x方向距离为5,y方向距离为5,如下
ocx.Watermark = "d:\\mxcad.jpg,70,5,5,1"
JS例子:
var iShowWatermark = false;
function ShowWatermark() {
iShowWatermark = !iShowWatermark;
if (iShowWatermark) {
mxOcx.Watermark = mxOcx.GetOcxAppPath() + "\\Watermark.png" + ",20,5,5,1";
mxOcx.ViewColor = 16777215; // 背景色改成白色
}
else {
mxOcx.Watermark = "";
mxOcx.ViewColor = 0; // 背景色改成白色
}
M X D R A W 梦想绘图控件教程V 5 . 2
20
}
C++: MxDraw::OpenBackgroundImageFile
参数说明如下:
// Summary:
// 把一个光栅图打开,做背景.
// Parameters:
// hOcx - 控件句柄
// luPt - 光栅图显示的在控件视区显示的左上角位置,视区窗口坐标。
//在居中显示时,luPt.x表示左右空白距离,luPt.y表示上下空白距离
// pszFile- DWG\BMP\JPG文件路径,支持http路径,文件件名为空时,清空背景文件
// iTransparen - 表示透明显示的,透明度,取值在 0~100,
// pos - 背景图片是否居中显示,还是左上角定位
// Returns:
// 成功能返回true
// -------------------------------------------------------------------------
static BOOL OpenBackgroundImageFile(IN MXDRAWOCXHANDLE hOcx,
IN CPoint luPt,IN LPCTSTR pszFile,IN int iTransparen = 50,
IN MxDraw::ImagePos pos = kAutoCenter,IN BOOL isAutoUpdisplay = TRUE);
1.9.4 绘光栅图到背景.
COM: _DMxDrawX::DrawImageToBackground
帮助文档抓图:
M X D R A W 梦想绘图控件教程V 5 . 2
21
1.9.5 把DWG 文件当着背景导入
C++接口: MxDraw::OpenBackgroundFile
COM接口:_DMxDrawX::OpenBackgroundFile
帮助文档抓图:
M X D R A W 梦想绘图控件教程V 5 . 2
22
1.9.6 对象夹点显示颜色
COM: IniSet="GripColor=RGB"
例如: JS,把夹点颜色改成 红色= 123,绿色=55,蓝色=78
设置GripColor=8075086
< param name="IniSet" value="GripColor=8075086">
C++接口:
MxDraw::SetGripColor
1.10 光标控制
设置光标线显示长度
COM: _DMxDrawX::CursorLong
_DMxDrawX::SetCursorCrossLong
设置为0表示无限长:CursorLong= 0,默认值为30
C++接口:
M X D R A W 梦想绘图控件教程V 5 . 2
23
MxDraw::SetCursorCrossLong
光标矩形框大小
COM: _DMxDrawX::CursorWidth
_DMxDrawX::SetCursorPickRect
默认值为6 ,单位是屏幕像素大小
C++接口:
MxDraw::SetCursorPickRect
1.10.1 自定义设置光标
COM接口:
临时需要改变光标,用如下函数完成:
保存光标状态,与RestoreCursor配合使用: _DMxDrawX::SaveCursor
设置光标,从cur光标文件加载: _DMxDrawX::SetCursor
恢复光标: _DMxDrawX::RestoreCursor
C++接口,该函数有三个重载,从光标文件(cur)加载光标,从光标资源中加载,设置内置光标
MxDraw::SetCursor
得到光标函数,用于备份光标,在需要时恢复光标
MxDraw::GetCursor
1.10.2 设置默认缺省时光标
COM接口:
_DMxDrawX::UseArrowCursor
设置默认使用箭头光标,不要使用缺省的十字光标
<param name="UseArrowCursor" value="1">
从文件加载一个默认光标,控件默认状态下将使用这个光标,路径是个相对MxDrawX.ocx所在
目录下的文件
Iniset属性,DEFAULTCURSOR=MyCursor.cur
例如JS:
< param name="Iniset" value="DEFAULTCURSOR=MyCursor.cur">
C++接口:
MxDraw::SetDefaultCursor
void CMxDrawXCtrl::SetUseArrowCursor(VARIANT_BOOL newVal)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
M X D R A W 梦想绘图控件教程V 5 . 2
24
m_UseArrowCursor = (newVal != VARIANT_FALSE);
if(m_UseArrowCursor)
{
MxDraw::SetDefaultCursor(::LoadCursor(NULL, IDC_ARROW),m_hDrawOcx);
}
else
{
MxDraw::SetDefaultCursor(NULL,m_hDrawOcx);
}
SetModifiedFlag();
}
1.10.3 光标位置
得到位置,文档坐标,是个MxDrawPoint对象.
COM接口:_DMxDrawX::GetInputCursorPos
设置光标位置,文档坐标
_DMxDrawX::SetInputCursorPos
1.11 坐标图标
显示或隐藏接口:
C++: MxDraw::SetDrawCoord
COM接口: DMxDrawX::IsDrawCoord
例如隐藏坐标图标,JS:
< param name="IsDrawCoord" value="0">
1.12 浏览模式
浏览模式下,控件会自动加载控件程序目录下的ViewRes目录的工具条文件,并禁用夹点编辑,
和选择功能。
参考例子:samples\ie\IedemoBrowse.htm
启用接口:
C++: MxDraw::SetBrowner
COM接口: DMxDrawX::BrowseMode
例如隐藏坐标图标,JS:
M X D R A W 梦想绘图控件教程V 5 . 2
25
< param name="IsBrowner" value="1">
例如C++ COM:
void CTestVc2005Dlg::OnBnClickedBrownerButton()
{
// TODO: 在此添加控件通知处理程序代码
static BOOL isBrowner = TRUE;
m_ocx.SetBrowseMode(isBrowner);
m_ocx.SetShowMenuBar(!isBrowner);
m_ocx.SetShowCommandWindow(!isBrowner);
isBrowner = !isBrowner;
}
1.13 动态提示
控件具有鼠标停在一个对象上,然后自动弹出一个提示信息窗口的功能,效果如下抓图:
参考例子:samples\ie\iedemoTest.htm,点击例子上边的设置超连接按钮,然后把鼠标停在对
象上两秒,就能看到效果了。
自动提示事件,用户响应该事件,返回需要显示的字符串,就行了。返回的字符串支持Html格
式化。
COM接口:
_DMxDrawXEvents::InputPointToolTipEvent
JS例子说明:
1) 增加InputPointToolTipEvent 事件响应函数
document.getElementById("MxDrawXCtrl").ImpInputPointToolTipFun = DoInputPointToolTipFun;
M X D R A W 梦想绘图控件教程V 5 . 2
26
2) 在事件中返回需要提示的字符串
function DoInputPointToolTipFun(ent) {
var sHyperlinks = ent.Hyperlinks;
if(sHyperlinks.length != 0)
{
var sClassName = ent.ObjectName;
var tip = "<b><ct=0x0000FF><al_c>"+sClassName+
"</b><br><ct=0x00AA00><hr=100%></ct><br><a=\"link\">" + sHyperlinks + "</a>";
mxOcx.SetEventRetString(tip);
}
ent = null;
CollectGarbage();
}
设置提示时间:
_DMxDrawX::SetToolTipInitialTime
设置ToolTip自动提示隐藏时间
_DMxDrawX::SetToolTipPopTime
C++接口:
McEdInputPointMonitor::MonitorInputPointToolTip
设置提示时间:
MxDraw::SetDynToolTipInitialTime
设置ToolTip自动提示隐藏时间
MxDraw::SetDynToolTipPopTime
帮助文档抓图:
M X D R A W 梦想绘图控件教程V 5 . 2
27
参考例子:MxDraw5.2\samples\Edit\Edit.sln,中InputPointMonitor.cpp文件;
代码如下:
Mcad::ErrorStatus CInputPointMonitor::MonitorInputPointToolTip(IN const McDbObjectIdArray& pickedEntities,
{
if(!pickedEntities.isEmpty())
{
AcDbObjectId entId = pickedEntities[0];
AcDbObjectPointer<AcDbEntity> spEnt(entId,AcDb::kForRead);
if(spEnt.openStatus() == Acad::eOk)
{
CString sClassName = spEnt->isA()->name();
AcDbHandle handle;
spEnt->getAcDbHandle(handle);
TCHAR szHandle[256];
handle.getIntoAsciiBuffer(szHandle);
CString sLayerName;
{
AcDbObjectPointer<AcDbLayerTableRecord>
spLayerTableRec(spEnt->layerId(),AcDb::kForRead);
if(spLayerTableRec.openStatus() == Acad::eOk)
M X D R A W 梦想绘图控件教程V 5 . 2
28
{
LPCTSTR pszLayerName = NULL;
spLayerTableRec->getName(pszLayerName);
sLayerName = pszLayerName;
}
}
sNewToolTipString.Format(_T("类名:%s,层名:%s,名
柄:%s"),sClassName,sLayerName,szHandle);
}
}
return Mcad::eOk;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。