1、控件具有鼠标停在一个对象上,然后自动弹出一个提示信息窗口的功能,效果如下:
2、参考例子:samples\ie\iedemoTest.htm,点击例子上边的设置超连接按钮,然后把鼠标停在对象上两秒,就能看到效果了。自动提示事件,用户响应该事件,返回需要显示的字符串,返回的字符串支持Html格式化。
COM接口 | _DMxDrawXEvents::InputPointToolTipEvent |
设置提示时间 | _DMxDrawX::SetToolTipInitialTime |
设置ToolTip自动提示隐藏时间 | _DMxDrawX::SetToolTipPopTime |
3、JS例子说明:
(1) 增加InputPointToolTipEvent事件响应函数:
1 | document.getElementById( "MxDrawXCtrl" ).ImpInputPointToolTipFun = DoInputPointToolTipFun; |
(2) 在事件中返回需要提示的字符串:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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(); } |
C++接口 | McEdInputPointMonitor::MonitorInputPointToolTip |
设置提示时间 | MxDraw::SetDynToolTipInitialTime |
设置ToolTip自动提示隐藏时间 | MxDraw::SetDynToolTipPopTime |
4、McEdInputPointMonitor::MonitorInputPointToolTip方法
(1)接口:
virtual Mcad::ErrorStatus MonitorInputPointToolTip(IN const McDbObjectIdArray& pickedEntities, IN const McGePoint3d& pickedPoint, IN CString& sNewToolTipString);
(2)参数:
参数 | 说明 |
---|
IN const McDbObjectIdArray& pickedEntities | 当前光标下面的实体 |
IN const McGePoint3d& pickedPoint | 光标位置 |
IN CString& sNewToolTipString | 返回提示信息字符串 |
(3)参考例子:MxDraw5.2\samples\Edit\Edit.sln中InputPointMonitor.cpp文件。代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | Mcad::ErrorStatus CInputPointMonitor::MonitorInputPointToolTip(IN const McDbObjectIdArray& pickedEntities, IN const McGePoint3d& pickedPoint, IN CString& sNewToolTipString ) { 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) { LPCTSTR pszLayerName = NULL; spLayerTableRec->getName(pszLayerName); sLayerName = pszLayerName; } } sNewToolTipString.Format(_T( "类名:%s,层名:%s,名柄:%s" ),sClassName,sLayerName,szHandle); } } return Mcad::eOk; } |