如何重绘功能区 UI 元素
How can I redraw the ribbon UI Elements
我正在做一个基于MDI环境的MFC Ribbon编程。
我想在 运行 时间更改 MFC 功能区库按钮的元素。
所以我在 运行 时间创建了一个 HBITMAP
对象,并在 CMFCToolBarImage
class.
中使用 SetPallete
方法
我的代码如下。
CMFCRibbonGallery* pGallery = (CMFCRibbonGallery*)pRibbon->FindByID(ID_BUTTON_LABEL_CONTROL_GALLERY);
CMFCToolBarImages test;
test.SetImageSize(t);
test.AddImage(hBitmap, 0);
pGallery->Clear();
pGallery->SetPalette(test);
pGallery->RedrawIcons();
当我运行此代码时,功能区图库按钮被删除,但图库按钮中没有元素。
奇怪的是,当我 Minimize/Maximize window 时,按钮上的图标是可见的。
如果没有 minimize/maximize window,图标如何可见?
谢谢。
尝试调用CMFCRibbonBar::RecalcLayout
,这个函数会强制重新计算和重绘完整的色带布局。
RecalcLayout()
有时是不够的。在那种情况下使用 ForceRecalcLayout()
,就可以了。
我正在做一个基于MDI环境的MFC Ribbon编程。
我想在 运行 时间更改 MFC 功能区库按钮的元素。
所以我在 运行 时间创建了一个 HBITMAP
对象,并在 CMFCToolBarImage
class.
SetPallete
方法
我的代码如下。
CMFCRibbonGallery* pGallery = (CMFCRibbonGallery*)pRibbon->FindByID(ID_BUTTON_LABEL_CONTROL_GALLERY);
CMFCToolBarImages test;
test.SetImageSize(t);
test.AddImage(hBitmap, 0);
pGallery->Clear();
pGallery->SetPalette(test);
pGallery->RedrawIcons();
当我运行此代码时,功能区图库按钮被删除,但图库按钮中没有元素。
奇怪的是,当我 Minimize/Maximize window 时,按钮上的图标是可见的。
如果没有 minimize/maximize window,图标如何可见? 谢谢。
尝试调用CMFCRibbonBar::RecalcLayout
,这个函数会强制重新计算和重绘完整的色带布局。
RecalcLayout()
有时是不够的。在那种情况下使用 ForceRecalcLayout()
,就可以了。