为ATL工程添加一个固有属性:
来源:互联网 发布:共享经济的相关数据 编辑:程序博客网 时间:2024/05/19 08:26
(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);
(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>
- 为ATL工程添加一个固有属性:
- ATL--创建简单的ATL之dll工程,给接口添加属性(实际上就是一个函数对)
- 为ATL Control添加事件
- ATL 工程下添加右击菜单
- vs2013 ATL 工程 添加连接点事件
- 在MFC工程中添加ATL
- ATL--创建简单的ATL之dll工程,添加“ATL简单对象”类的参数说明
- ATL 属性为BSTR 时数据处理
- 为DLL添加ATL/WTL支持
- 为DLL添加ATL/WTL支持
- 为DLL添加ATL/WTL支持
- 为MFC程序添加ATL简单对象
- 如何在VC中为工程添加一个编译选项
- 如何在VC中为工程添加一个编译选项
- 添加为工程
- 为工程添加mybaties
- DataGrid中为一个超链接跳转添加多个属性
- 为控件添加属性
- 十分钟让你明白Objective-C的语法(和Java、C++的对比)
- Linux下安装Qt-Creator,Qt-SDK
- Java中 String类、StringBuilder类、StringBuffer类 区别与如何选择
- OpenNebula 4.0 Beta 新特性介绍
- Selenium2.0介绍——WebDriver两种驱动浏览器的方式.
- 为ATL工程添加一个固有属性:
- 补:程序人生--2000年(6)
- Thinking In DesignPattern
- oracle 条件查询,比较运算符,逻辑运算符,特殊运算符,判断空值,大小写敏感,多行,多列子查询
- 括号匹配算法
- android的PowerManager和PowerManager.WakeLock
- SVN客户端--TortoiseSVN使用说明
- 常见EMC疑问及对策
- Uva 514 Rails 栈,stack