ATL下如何添加属性包

属性包: ActiveX增加对插件属性的支持后, 使其能在网页中通过OBJECT属性, 在控件初始化前将参数传入.

A. 在类中加入继承 public IPersistPropertyBagImpl<CXXX>, 并添加响应的接口映射, 如下;

BEGIN_COM_MAP(CXXX) ... COM_INTERFACE_ENTRY(IPersistPropertyBag) ... END_COM_MAP()

B. 为Composite控件接口添加属性. 在WorkSpace中, 右击接口名, 选择"Add property"后, 在property中分别添入参数类型(BSTR)和属性名(Name)即可.

BEGIN_PROP_MAP(CXXX) PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4) PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4) // Example entries // PROP_ENTRY("Property Description", dispid, clsid) // PROP_PAGE(CLSID_StockColorPage) // 6 -> dispid,dispid为接口属性的id PROP_ENTRY("Name", 6, CLSID_NULL) END_PROP_MAP()

*你可以通过双击接口,在接口定义中看到dispid.如下:id(6)

... [propget, id(6), helpstring("property Name")] HRESULT Name([out, retval] BSTR *pVal); [propput, id(6), helpstring("property Name")] HRESULT Name([in] BSTR newVal); ...

C.  定义一个成员变量,用来存放传入的参数.CComBSTR m_bstrValue;在你定义的属性中,(加入如下黑体的行)用以保存传进来的参数值.

STDMETHODIMP CVMShow::get_Name(BSTR *pVal) { *pVal = m_bstrValue.Copy(); return S_OK; } STDMETHODIMP CVMShow::put_Name(BSTR newVal) { m_bstrValue= newVal; return S_OK; }

D. 网页的交互为,如果控件有窗口的话.(这些交互在ActiveX对话框的初始化前就进行了)
<object id='AtlComId' classid='XXXXXX'> <param name='Name' value='hqulyc'> </object>

注: 对于Simple Object的ATL在加入属性包接口和接口映射后,需要定义一个共有的成员变量:bool m_bRequiresSave; m_bRequiresSave=false;

ATL属性包(PropertyBag)相关推荐

  1. .net core 微服务之模型表字段动态扩展二——EF core的属性包支持

    今天学到了一个视角,叫做读者视角--从情商角度看就是换位思考.当我在写文章的时候,可能仅仅站在我的角度看待这个写的动作.那我就怎么写的爽怎么来,什么用词用字就按自己的习惯来书写,文章的深浅随心,反正我 ...

  2. DP/eDP协议学习--属性包(MSA)和SDP的插入

    接上篇视频传输格式 划个水,这部分内容大多是这个截图比较多, 属性包和SDP的需要使用SS/SE进行封装. 属性数据(MSA)包 属性数据如下表所示,MSA只能在垂直消隐区发送,并且一帧只能发送一次. ...

  3. SharePoint 2013 CSOM 对象模型属性包

     博客地址:http://blog.csdn.net/FoxDave 虽说是翻译,但是并没什么翻译的,主要内容就是说有一些能通过Server API配置的Site/Web属性在CSOM中找不到,其 ...

  4. python全栈工程师能接到私活么_Python全栈工程师(包、模块 的导入)

    ParisGabriel 每天坚持手写  一天一篇  决定坚持几年 为了梦想 为了信仰 Python人工智能从入门到精通 $ pip3 install tensorflow : 第三方模块tensor ...

  5. python中模块文件的扩展名不一定是py_python模块和python包有什么区别?

    python模块和python包有什么区别? 另请参见:"package"和"module"(其他语言)之间的区别是什么? 我可能错了,但对我来说:模块基本上是 ...

  6. less/sass中属性选择器使用方法

    <div className={styles.box}><span index="2" mylabel="hello some">tes ...

  7. VS2008 不在支持 Attributed ATL

    从VS2008的What' new 来看,VS2008已经不在支持ATL属性编程.相关描述见下: The ATL Project wizard no longer provides an option ...

  8. (翻译)Attacking Interoperability(攻击互操作性)in Black Hat 2009 研究报告

    前言 攻击互操作性(Attacking Interoperability)是 Mark & Ryan & David 发表于 2009 年的美国黑帽大会(Black Hat)上的一份研 ...

  9. Visual Studio 2019 发行说明

    原文:https://docs.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes 单击按钮即可下载最新版 Visual Stud ...

最新文章

  1. flask_模拟请求post,get
  2. 201671010128 2017-11-12《Java程序设计》之图形程序设计
  3. ospf cost 引起路由可以ping通但应用无法连接_路由算法(通网五)
  4. iOS进阶之架构设计MVVM模式仿新闻项目(6)
  5. c语言 文件 long double 读取,读取*.wav音频文件
  6. Servlet+MySQL使用DBCP数据库连接池实现用户登录
  7. Tomcat配置解析
  8. struts2在lt;s:selectgt;用动态标签
  9. 如何写好工作周报?工作周报模板
  10. Keil5 显示汉字时字体不生效,设置国标时,字体设置无效。
  11. php paypal支付接口文档,php 实现PayPal支付
  12. PS和AE、PR的区别是什么?
  13. rtmp流放与flv格式视频问题解决
  14. 网页字体转换——实习僧
  15. python面试题整活:另类复制粘贴
  16. 【数据处理与分析】电商订单数据清洗
  17. 类型多样的鸡尾酒免抠摄影素材,速来收藏
  18. 高职计算机文化基础考试试题,计算机文化基础期末试题(高职)新.doc
  19. Stata:交乘项的对称效应与图示
  20. Ae入门系列之一:了解Ae及工作流程

热门文章

  1. 当前超级计算机的应用方兴未艾,(全国通用版)18版高考语文大一轮复习第2周基础组合练4...
  2. 5种实用方案——找回丢失的excel文件
  3. data:image/png;base64,iVBORw0KGg... 表示的是一张图片
  4. WPS压力传感器测高温部件的注意事项
  5. 人民币在岸 离岸 中间价的含义与关系
  6. 正三角形旋转一周得到的图形是_将图中的直角三角形绕最长的边旋转一周可以得到的一个几何体,从正面看这个几何体所得到的平面图形是()A.B...
  7. 关于ESP8266+OLED显示网络天气+天气图标,我掉进过的一些坑
  8. 模具设计干货,UG部件的自动取整
  9. 如何区别随身WiFi板子是什么芯片
  10. 服务器显示无internet,为何我可以上网,但却显示无internet访问