为ATL工程添加一个固有属性:

  (1) 为组件对象添加基类:public IPersistPropertyBagImpl<CXP> 
  (2) 添加对应的接口映射:COM_INTERFACE_ENTRY(IPersistPropertyBag)
  (3) 属性映射表中添加你要的:
BEGIN_PROP_MAP(CXPPlayer)
 PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
 PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
 //or CLSID_NULL
 PROP_ENTRY("UiMode", 16,  CLSID_XPPlayer)
END_PROP_MAP()
  这里idl对应关于dispid = 16相关代码如下:
  [propget, id(16), helpstring("property UiMode")]    HRESULT UiMode([out, retval] INT* newVal);

 [propput, id(16), helpstring("property UiMode")]    HRESULT UiMode([in] INT newVal);


这样,就定义了自己的固有属性UiMode的,你可以在你的控件使用中使用此属性。为什么需要这个呢?直接有了UiMode属性就可以了,为啥还搞个固有属性。你想想,类似UiMode这种属性,如果你仅仅以属性方式提供的话,更新UiMode会导致界面更新跳动。所以最好的方式就是使用固有属性,让控件在初始化的时候就进行相关的分支操作。要不然等到控件初始化之后,你在调用UiMode属性修改,就会导致界面跳动。
 在web中你可以使用固有属性,也就是你经常看到的<Param name =  value= >之类的东西,例如:
<object id="pplayer" classid="clsid:ABDC34RT-956E-49CC-B444-73AFE593AD34"  width="700" height="600" >
<PARAM NAME="UiMode" VALUE="0">
</object>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值