ATL在Web中的Param属性初始化问题

来源:互联网 发布:centos安装搜狗输入法 编辑:程序博客网 时间:2024/05/21 08:46

为了使页面加载COM组件时能够使用

<object id="aComInstCheck" classid="CLSID:A92203E3-1CBF-48F7-BCA3-C41352FAFFE3" >
<param name="longTest" value="4" />
</object>

给COM组件属性 longTest 赋值,需要给ATL控件添加一个固有属性:

(1) 为组件对象添加基类:public IPersistPropertyBagImpl<CXX>  
(2) 添加对应的接口映射:COM_INTERFACE_ENTRY(IPersistPropertyBag)
(3) 属性映射表中添加你要的:
BEGIN_PROP_MAP(CXX)
 PROP_ENTRY("longTest", 2,  CLSID_XX)
END_PROP_MAP()
  这里idl对应关于dispid = 2相关代码如下:
[propget, id(2)] HRESULT longTest([out, retval] LONG* pVal);
[propput, id(2)] HRESULT longTest([in] LONG newVal);

(4) 由于继承了 IPersistPropertyBagImpl 要为组件对象添加如下成员变量:

public:
BOOL m_bRequiresSave;

不添加,编译报如下错误:

error C2039: “m_bRequiresSave”: 不是“CXX”的成员



0 0
原创粉丝点击