Как я могу перерисовать элементы пользовательского интерфейса ленты

Я занимаюсь программированием ленты MFC на основе сред MDI.

Я хочу изменить элементы кнопки галереи ленты 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 ответа

Решение

Попробуй и позвони CMFCRibbonBar::RecalcLayout, эта функция заставляет пересчитать и перерисовать весь макет ленты.

RecalcLayout() иногда не достаточно. В этом случае используйте ForceRecalcLayout(), что сделает свое дело.

Другие вопросы по тегам