在DgnPrimitiveTool有没有类似C#窗口的OnMouseLeave事件,当鼠标移出当前视图时触发的
您具体想要实现什么功能?MS自身已经控制得很好了,比如动态显示时当你鼠标不在当前视图时动态就不显示了。
我自己做了一个显示绘图参数的窗口,可以随着我的鼠标移动,当鼠标移动到视图外后,我想把这个参数窗口隐藏掉。因为这个窗口我做了好多个性化的交互功能,不希望他成为toolset,所以不想用MS的那套机制。
MSCE C#中没有找到这个接口啊
这个是c/c++的,c#的没有,所以可能需要您通过混合编程来完成了。
查到C#中有IViewWidget这个接口有相关事件,但不知道怎么用
这个不是做这个用的,Widget指的是如下图所示的内容:
感谢2位老师的帮助,后来我尝试在Application中加Bentley.Interop.MicroStationDGN.IEnterIdleEvent这个事件,解决了需求,主要思路是在Tool安装后将EnterIdle事件加入到Application,然后监听到该事件后,判断当前鼠标位置是否在视图范围内,核心功能代码如下:
DPoint3d point = new DPoint3d(); DigitalStationLibrary.dslib_GetCursorGlobalPosition(ref point);
int left = 0, bottom = 0, right = 0, top = 0; DigitalStationLibrary.dslib_GetViewWindowGlobalPosition(mViewport.ViewNumber, ref left, ref bottom, ref right, ref top);
if (point.X < left || point.X > right || point.Y < top || point.Y > bottom) { mParamForm.Hide(); }
其中DigitalStationLibrary.dslib_GetCursorGlobalPosition和DigitalStationLibrary.dslib_GetViewWindowGlobalPosition是用C++封装的mdl函数