各位高手,目前学习遇到一个问题,在用ATL编写Outlook Addin 插件时,使用Ribbon XML 显示了一个自定义的Gallery控件,想要实现控件Label 随鼠标点击子项按钮而动态改变,目前遇到的问题是:Gallery 控件已完成getlabel属性回调函数GetLabel, 而且Debug调试,可以看到传出的BSTR* pstrlabel 值变化,而且在按钮的点击回调函数中也已经使用了InvalidateControl(“控件ID”)来进行重绘,目前现象是运行时不显示Label信息,也已经试过ShowLabel = “true”,但同样的结果,不知道那里除了错误,或纰漏。
请高手解答!!!!
附代码:
STDMETHODIMP CConnect::OnGetLabel(IDispatch* pControl, BSTR* pbstrLabel)
{
UNREFERENCED_PARAMETER(pControl);
HRESULT hResult = S_FALSE;
do
{
BSTR bstrTempLabel = m_bstrLabel.AllocSysString();
pbstrLabel = &bstrTempLabel;
hResult = S_OK;
} while (FALSE);
return hResult;
}
STDMETHODIMP CConnect::ButtonFourDaysClicked(IDispatch* pControl)
{
UNREFERENCED_PARAMETER(pControl);
HRESULT hResult = S_FALSE;
do
{
m_bstrLabel = _T("Interval Days:Four");
BSTR bstrControlID = SysAllocString(UPDATE_CONTROL);
m_pRibbonUI->InvalidateControl(bstrControlID);
SysFreeString(bstrControlID);
} while (FALSE);
return hResult;
}
请高手解答!!!!
附代码:
STDMETHODIMP CConnect::OnGetLabel(IDispatch* pControl, BSTR* pbstrLabel)
{
UNREFERENCED_PARAMETER(pControl);
HRESULT hResult = S_FALSE;
do
{
BSTR bstrTempLabel = m_bstrLabel.AllocSysString();
pbstrLabel = &bstrTempLabel;
hResult = S_OK;
} while (FALSE);
return hResult;
}
STDMETHODIMP CConnect::ButtonFourDaysClicked(IDispatch* pControl)
{
UNREFERENCED_PARAMETER(pControl);
HRESULT hResult = S_FALSE;
do
{
m_bstrLabel = _T("Interval Days:Four");
BSTR bstrControlID = SysAllocString(UPDATE_CONTROL);
m_pRibbonUI->InvalidateControl(bstrControlID);
SysFreeString(bstrControlID);
} while (FALSE);
return hResult;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货