16,472
社区成员
发帖
与我相关
我的任务
分享
如何迫使alt activex的ondraw被调用?
需求:对某个成员变量设置值,比如为1的时候,textout “1”,
为2的时候,textout"2"
invalidate似乎不行,导致测试active x的容器崩溃.
做法:
用alt建立一个activex, 然后添加了一个事件"FILL Color". 添加这个属性后,书上似乎没有提到要对这个属性
的 get, put两个函数如何处理。
[propput, bindable, requestedit, id(DISPID_FILLCOLOR)]
HRESULT FillColor([in]OLE_COLOR clr);
[propget, bindable, requestedit, id(DISPID_FILLCOLOR)]
HRESULT FillColor([out, retval]OLE_COLOR* pclr);
于是我自己添加了一个属性
[propget, id(1), helpstring("属性 sides")] HRESULT sides([out, retval] short* pVal);
[propput, id(1), helpstring("属性 sides")] HRESULT sides([in] short newVal);
实现代码:
STDMETHODIMP CPolyCtrl::put_sides(short newVal)
{
// TODO: 在此添加实现代码
if(m_nsides<0)
{
//ERROR(_T("args are invalid!"));
return S_FALSE;
}
m_nsides=323;
//Invalidate(TRUE);
return S_OK;
}
会导致测试容器崩溃,原因是: Invalidate(TRUE);导致的