网页初始化ATL开发的activex控件属性

 
  如何在web页面中初始化控件的属性呢?此文根据实际例子讲解atl开发的控件其属性的初始化方法,假设属性为StreamUrl。
 
1. class ATL_NO_VTABLE CXXX:
//added
public IPersistPropertyBagImpl<CXXX>
 
2. 添加属性StreamUrl, 在 idl 文件中对应有
[propget, id(1), helpstring("property StreamUrl")] HRESULT StreamUrl([out, retval] BSTR *pVal);
[propput, id(1), helpstring("property StreamUrl")] HRESULT StreamUrl([in] BSTR newVal);
 
3 . BEGIN_PROP_MAP(CXXX)
 PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
 PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
//<<added
 PROP_ENTRY("StreamUrl", 1, CLSID_NULL)
 //>>
 
END_PROP_MAP()
 
  注意在 PROP_ENTRY("StreamUrl", 1, CLSID_NULL) 中的 1为 idl文件中的 id(1),自己作相应的修改。
 
4.    BEGIN_COM_MAP(CXXX)
//<<added
COM_INTERFACE_ENTRY(IPersistPropertyBag)
//>>
END_COM_MAP()
 
 5 .在类CXXX中添加变量如下:
BOOL m_bRequiresSave; // 这是 IPersistPropertyBagImpl 需要的
CComBSTR m_bstrUrl;
并初始化m_bRequiresSave为false。
 6
 
STDMETHODIMP CXXX::get_StreamUrl(BSTR *pVal)
{
*pVal = m_bstrUrl.Copy(); // 如果是*pVal = m_bstrUrl,会造成ie崩溃
 return S_OK;
}
 
STDMETHODIMP CXXX::put_StreamUrl(BSTR newVal)
{
// 如果直接m_bstrUrl = newVal,会造成ie崩溃
 m_bstrUrl.Empty(); 
m_bstrUrl = newVal;
 return S_OK;
}
 
7 .网页中
<PARAM name="StreamUrl" value="http://www.shengfengtech.com">
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值