_DMxDrawXEvents::MouseEvent
CAD控件中的鼠标事件。
| 参数 | 说明 |
|---|---|
LONG lType | 事件类型,1鼠标移动,2是鼠标左键按下,3是鼠标右键按下,4是鼠标左键双击 5是鼠标左键释放 6是鼠标右键释放 7是鼠标中键按下 8是鼠标中键释放 9是鼠标中键双击 10是鼠标中键滚动 |
DOUBLE dX | 事件发生时的鼠标X坐标,文档坐标 |
DOUBLE dY | 事件发生时的鼠标Y坐标,文档坐标 |
LONG* lRet | lRet 返回非0,消息将不在往下传递 |
提示鼠标双击下被点击的实体js代码:
function MouseEvent(dX,dY,lType)
{
var mxOcx = document.getElementById("MxDrawXCtrl");
if (lType == 4)
{
// 鼠标左键双击.
// 构建选择集,找到鼠标左建双击下的实体。
var ss =mxOcx.newSelectionSet();
var filter =mxOcx.newResbuf();
filter.AddStringEx("LINE",5020);
var point =mxOcx.newPoint();
point.x = dX;
point.y = dY;
ss.SelectAtPoint(point, filter);
if (ss.Count > 0)
{
var ent = ss.Item(0);
alert("点击了" + ent.ObjectName + "对象");
}
lRet = 1;
// 取消后面的命令。
mxOcx.SendStringToExecute("");
}
}响应鼠标点击图片对象js代码:
var draw = document.getElementById("MxDrawXCtrl");
draw.ImplementMouseEventFun = function MouseEvent(dX, dY, lType) {
if(lType == 2)
{
// 鼠标左键按下
// dTol是搜索范围,50是屏幕像素.
var dTol = 50;
// 临时修改CursorWidth的大小,用FindEntAtPoint函数确定搜索范围.
var bak = draw.CursorWidth;
draw.CursorWidth = dTol;
// 搜索过滤条件,只选择图片.
var filter = draw.NewResbuf();
// MxImageMark是图片对象的DXF组码名称,5020在DXF组码,代表MxImageMark是对象类型.
filter.AddStringEx("MxImageMark",5020);
// 查找鼠标点击的实体。
var ent = draw.FindEntAtPoint(dX,dY,filter);
// 恢复光标拾取框的大小.
draw.CursorWidth = bak;
if(ent != null)
{
alert("点击了一个图片");
// 设置1,表示鼠标事件,不再往下传递.
mxOcx.SetEventRet(1);
}
}
}_DMxDrawXEvents::HyperlinkClick
有超连接的实体被点击了。
| 参数 | 说明 |
|---|---|
IDispatch* pEntity | IMxDrawEntity,被点击的实体 |
DOUBLE dX | 点击位置X,文档坐标 |
DOUBLE dY | 点击位置Y,文档坐标 |
LONG* pRet | 成功,返回1, *pRet = 1 |
js代码实现:
document.getElementById("MxDrawXCtrl").ImpHyperlinkClickFun = DoHyperlinkClickFun;
function DoHyperlinkClickFun(ent, dX, dY) {
mxOcx.GotoURL(ent.Hyperlinks);
mxOcx.SetEventRet(1);
}