明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 9006|回复: 9

在CAD特性面板(OPM)中以中文显示自定义实体属性

  [复制链接]
发表于 2012-4-17 09:33 | 显示全部楼层 |阅读模式
前段时间学习了如何在CAD特性面板(OPM)中显示自定义实体属性,在完成上述功能后,发现原来以中文显示的属性名全部变成了英文,要将显示的属性名改成中文,必须重载IOPMPropertyExtension::GetDisplayName函数。但使用该函数必须要知道CAD内置属性名的DISPID,搜遍整个SDK和全球网页也没找到对应属性的DISPID,最后在一个不知道是哪国的论坛中有一段似乎是改变显示属性字名的代码,报着试试看的想法将其中的DISPID值带入自己的代码中,居然成功了!现发给大家分享。
以下是上述论坛的链接:
//定义自定义实体属性的DISPID
#define DISPID_MyProperty1    0x01  //自定义属性1
#define DISPID_MyProperty2    0x02  //自定义属性2
//在.h文件中声明GetDisplayName函数
STDMETHOD(GetDisplayName)(/* [in]  */ DISPID dispID, /* [out] */ BSTR* pbstr);
//在.cpp文件中添加如下代码
STDMETHODIMP CMyProperty::GetDisplayName(DISPID dispID, BSTR* pbstr)
{
     switch (dispID)
     {
     case (0x401):
*pbstr  = ::SysAllocString(_T("自定义实体名称"));
        break;
    case (0x516):
        *pbstr  = ::SysAllocString(_T("颜色"));
        break;
    case (0x501):
        *pbstr  = ::SysAllocString(_T("图层"));
        break;
    case (0x502):
        *pbstr  = ::SysAllocString(_T("线型"));
        break;
    case (0x503):
        *pbstr  = ::SysAllocString(_T("线型比例"));
        break;
    case (0x513):
        *pbstr  = ::SysAllocString(_T("打印样式"));
        break;
    case (0x514):
        *pbstr  = ::SysAllocString(_T("线宽"));
        break;
    case (0x515):
        *pbstr  = ::SysAllocString(_T("超链接"));
        break;
    case (0x577):
        *pbstr  = ::SysAllocString(_T("材质"));
        break;
     case (0x01):
        *pbstr = ::SysAllocString(_T("自定义属性1"));
        break;
     case (0x02):
        *pbstr = ::SysAllocString(_T("自定义属性2"));
        break;
     default:
return AcOpmGetDisplayName(reinterpret_cast<IUnknown*>(this), GetResourceInstance(), GetOPMPropertyMap(), dispID, pbstr); //默认返回CAD字符串
     }
     return S_OK;
}
发表于 2012-4-17 13:23 | 显示全部楼层
...................
发表于 2012-4-17 22:37 | 显示全部楼层
多谢楼主分享
发表于 2012-8-6 20:19 | 显示全部楼层
很好,正需要这个程序呢,谢谢
发表于 2012-8-7 10:13 | 显示全部楼层
能发一个opm的简单程序给我啊,在帮助里面看的有点困难,谢谢
735023723@qq.com
发表于 2012-8-7 11:31 | 显示全部楼层
看一下,以后再理解
发表于 2012-8-24 09:02 | 显示全部楼层
可以发个简单的这种程序代码给我啊?想做这个呢,可惜没办法
发表于 2019-6-21 01:19 来自手机 | 显示全部楼层
留爪,以后慢慢来看
发表于 2020-11-22 12:49 | 显示全部楼层
能传授一下这方面的经验吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-25 09:21 , Processed in 0.762124 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表