我们有一个用 C++ 实现的 Word 插件作为 COM 插件。我们的功能区组是使用 GetCustomUI 回调加载的。当 Word 2010 以折叠布局显示我们的功能区组时,仅显示默认图标。
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="OnLoad">
<ribbon>
<tabs>
<tab idMso="TabReviewWord">
<group id="MyGroup" label="My AddIn" getImage="GetGroupImage" insertAfterMso="GroupProofing" >
.......
STDMETHODIMP CWordPlugIn::GetGroupImage(IDispatch* pRibbon, IPictureDisp** ppdispImage)
{
return GetImage(GetGroupIcon(16), ppdispImage);
};
HRESULT CWordPlugIn::GetImage(HICON hIcon, IPictureDisp** ppdispImage)
{
PICTDESC pd;
memset(&pd, 0, sizeof(pd));
pd.cbSizeofstruct = sizeof(pd);
pd.picType = PICTYPE_ICON;
pd.icon.hicon = hIcon;
if ( pd.icon.hicon == NULL )
{
return E_INVALIDARG;
};
HRESULT hRes = OleCreatePictureIndirect(&pd, IID_IPictureDisp, FALSE, (LPVOID *) ppdispImage);
if ( hRes != S_OK )
{
//write log
};
return hRes;
};
当我没有为组定义“getImage”回调时,折叠组显示 Microsoft 默认图标。当我定义“getImage”回调时,我的图标没有显示,只是一个空图像。相同的回调非常适用于按钮图标。如何以编程方式定义为折叠组显示的组图标?我尝试了 16 和 32 像素的图标。