Сбой / Утверждение после вызова ForceRecalcLayout

Я добавил ленту в существующее приложение MFC.

Лента создана с использованием редактора.

В одной из панелей у меня есть Custom CMFCRibbonGallery (производная от), чье содержимое (значок) я меняю динамически. (Это очень похоже на галерею стилей в Excel.

  1. После того, как я каждый раз меняю содержимое, я вызываю ForceRecalcLayout, что в большинстве случаев приводит к Assert, обычно на m_pHighlighted или m_pPressed. Пожалуйста, смотрите прикрепленный snaphot1.jpeg, этот Assert произошел, когда я перемещал указатель мыши по элементам Ribbon Gallery (всплывающее окно расширенного режима), когда вызывался ForceRecalcLayout.
  2. В другом случае, если я добавляю подпункт (например, у нас есть "Новый стиль ячейки" в Галерее стилей Excel) в QAT с помощью контекстного меню, а затем пытаюсь создать новый стиль ячейки, я получаю Assert на CMFCRibbonButton. Обратитесь к snapshot2.jpg

1 ответ

Когда меняется только значок, достаточно сделать ленту недействительной.

Только если размер отдельных элементов изменяется, вам нужно вызывать RecalcLayout.

Я не вижу причин для вызова ForceRecalsLayout.

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