我正在进行基于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();
当我运行此代码时,功能区图库按钮被删除,但图库按钮中没有元素。
奇怪的是,当我最小化/最大化窗口时,图标在按钮处可见。
如果没有最小化/最大化窗口,图标是如何可见的? 谢谢你。
答案 0 :(得分:2)
尝试并调用CMFCRibbonBar::RecalcLayout
,此函数强制重新计算并重新绘制完整的功能区布局。
答案 1 :(得分:0)
RecalcLayout()
有时还不够。在这种情况下,使用ForceRecalcLayout()
可以解决问题。