描述:
用ATL写Activex控件中: 服务端无法得到 用户给控件设的属性!!!
我的控件接口有一个属性:
[propget, id(1), helpstring("Name")] HRESULT Name([out, retval] BSTR *pVal);
[propput, id(1), helpstring("Name")] HRESULT Name([in] BSTR newVal);
在这个接口的实现类:
1. 我声明的了个成员变量来保存属性:
string strName;
2. 我在属性的写接口中得到控件用户设的属性.
STDMETHODIMP CCom::put_Name(BSTR newVal)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
m_strFileName
= _com_util::ConvertBSTRToString(newVal);
//注: 上句完了之后m_strFileName中已保存了属性值!!!
return S_OK;
}
3. 在这控件Create时.我要用到这个属性的值:
LRESULT CCom::OnCreate(UINT uMsg, WPARAM wParam
, LPARAM lParam, BOOL& bHandled)
{
m_strFileName; //到这里时m_strFileName变成了空???
return 0;
}
/////////////////////////////////////////////////////////////////////////////////////
请高手指教!!!
谢谢.
解决方案1:
学习一下~
解决方案2: 1. 我声明的了个成员变量来保存属性:
string strName;
你应该把它声明为string m_strFileName;来保存属性!
OnCreate先调用了。
解决方案4:你在控件中的方法put_Name可能根本就没有执行,你把你的控件放在网页中,在这两个函数打下断点调试便知
解决方案5:学习!