返回介绍

动态提示

发布于 2023-08-09 23:10:33 字数 3314 浏览 0 评论 0 收藏 0

CAD控件具有鼠标停在一个对象上,然后自动弹出一个提示信息窗口的功能,效果如下:

stuat.png

C++接口McEdInputPointMonitor::MonitorInputPointToolTip
设置提示时间MxDraw::SetDynToolTipInitialTime
设置ToolTip自动提示隐藏时间MxDraw::SetDynToolTipPopTime

McEdInputPointMonitor::MonitorInputPointToolTip方法

接口:

virtual Mcad::ErrorStatus MonitorInputPointToolTip(IN const McDbObjectIdArray& pickedEntities, IN const McGePoint3d& pickedPoint, IN CString& sNewToolTipString);

参数:

参数说明
IN const McDbObjectIdArray& pickedEntities当前光标下面的实体
IN const McGePoint3d& pickedPoint光标位置
IN CString& sNewToolTipString返回提示信息字符串

参考例子:MxDraw5.2\samples\Edit\Edit.sln中 InputPointMonitor.cpp 文件。代码如下:

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;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文