您的位置:首页 > 移动开发 > Objective-C

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

2014-07-31 23:12 375 查看
为了使页面加载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”的成员


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  web atl 控件 object
相关文章推荐