Как я могу перерисовать элементы пользовательского интерфейса ленты
Я занимаюсь программированием ленты 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()
, что сделает свое дело.