现以 需要提取参数 MyURL 为例:
1. class ATL_NO_VTABLE CXXX:
...
public IPersistPropertyBagImpl<CXXX>
2. 添加属性,MyURL, 在 idl 文件中对应有
[propget, id(16), helpstring("property MyURL")] HRESULT MyURL([out, retval] BSTR *pVal);
[propput, id(16), helpstring("property MyURL")] HRESULT MyURL([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)
PROP_ENTRY("MyURL", 16, CLSID_NULL)
// Example entries
// PROP_ENTRY("Property Description", dispid, clsid)
// PROP_PAGE(CLSID_StockColorPage)
END_PROP_MAP()
注意在 PROP_ENTRY("MyURL", 16, CLSID_NULL) 中的 16为 idl中的 id(16),自己的对应作修改
4。添加类变量 BOOL m_bRequiresSave; // 这是 IPersistPropertyBagImpl 需要的
CComBSTR m_bstrMyUrl;
5. STDMETHODIMP CXXX::get_MyURL(BSTR *pVal)
{
// TODO: Add your implementation code here
*pVal = m_bstrMyUrl.Copy();
return S_OK;
}
STDMETHODIMP CXXX::put_MyURL(BSTR newVal)
{
// TODO: Add your implementation code here
m_bstrMyUrl.Empty();
m_bstrMyUrl = newVal;
return S_OK;
}
6.网页中
<PARAM name="MyURL" value="http://www.softwife.com">