增加ImplementMouseEventFun事件响应函数:
document.getElementById("MxDrawXCtrl").ImplementMouseEventFun = MouseEvent;
可以响应控件的鼠标左键按下事件,然后用我们FindEntAtPoint,或MxDrawSelectionSet::SelectAtPoint函数,得到鼠标坐标下面的实体。
例如:
// 控件鼠标事件 function MouseEvent(dX, dY, lType) { //"lType 是事件类型,1鼠标移动,2是鼠标左键按下,3是鼠标右键按下,4是鼠标左键双击.lRet 返回非0,消息将不在往下传递" if(lType == 4) { // 判断当前是否正在运行选择命令。 var ret = mxOcx.Call("Mx_IsRuningCommand", ""); if ((ret.AtString(0) == "Ok") && ret.AtString(1) != "intellisel" ) return; // 鼠标左键双击. // 构建选择集,找到鼠标左建双击下的实体。 var ss = mxOcx.NewSelectionSet(); var filter = mxOcx.NewResbuf(); //filter.AddString("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 + "对象"); } // 取消后面的命令,不让鼠标事件再往下传递. mxOcx.SendStringToExecute(""); return 1; } else if(lType == 3) { // MessageBox.Show("右键按下"); } }
原文:https://www.cnblogs.com/yzy0224/p/12016756.html