如何重绘功能区UI元素

时间:2018-01-17 01:34:07

标签: mfc windows-ribbon-framework

我正在进行基于MDI环境的MFC功能区编程。

我想在运行时更改MFC功能区图库按钮的元素。

所以我在运行时创建HBITMAP个对象,并在SetPallete类中使用CMFCToolBarImage方法。

我的代码如下。

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();

当我运行此代码时,功能区图库按钮被删除,但图库按钮中没有元素。

奇怪的是,当我最小化/最大化窗口时,图标在按钮处可见。

如果没有最小化/最大化窗口,图标是如何可见的? 谢谢你。

2 个答案:

答案 0 :(得分:2)

尝试并调​​用CMFCRibbonBar::RecalcLayout,此函数强制重新计算并重新绘制完整的功能区布局。

答案 1 :(得分:0)

RecalcLayout()有时还不够。在这种情况下,使用ForceRecalcLayout()可以解决问题。