Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mfc 如何重新绘制功能区UI元素_Mfc_Windows Ribbon Framework - Fatal编程技术网

Mfc 如何重新绘制功能区UI元素

Mfc 如何重新绘制功能区UI元素,mfc,windows-ribbon-framework,Mfc,Windows Ribbon Framework,我正在做一个基于MDI环境的MFC功能区编程 我想在运行时更改MFC功能区库按钮的元素 因此,我在运行时使用CMFCToolBarImage类中的SetPallete方法创建了一个HBITMAP对象 我的代码如下 CMFCRibbonGallery* pGallery = (CMFCRibbonGallery*)pRibbon->FindByID(ID_BUTTON_LABEL_CONTROL_GALLERY); CMFCToolBarImages test; test.SetImageS

我正在做一个基于MDI环境的MFC功能区编程

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

因此,我在运行时使用
CMFCToolBarImage
类中的
SetPallete
方法创建了一个
HBITMAP
对象

我的代码如下

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();
当我运行此代码时,功能区库按钮被删除,但库按钮中没有任何元素

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

如果不最小化/最大化窗口,图标如何可见?
谢谢。

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

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

RecalcLayout()
有时是不够的。在这种情况下,使用
forceRecalLayout()
,这样就可以了。

recalLayout()
有时还不够。在这种情况下,使用
ForceRecalcLayout()
,就可以了