Сбой / Утверждение после вызова ForceRecalcLayout
Я добавил ленту в существующее приложение MFC.
Лента создана с использованием редактора.
В одной из панелей у меня есть Custom CMFCRibbonGallery (производная от), чье содержимое (значок) я меняю динамически. (Это очень похоже на галерею стилей в Excel.
- После того, как я каждый раз меняю содержимое, я вызываю ForceRecalcLayout, что в большинстве случаев приводит к Assert, обычно на m_pHighlighted или m_pPressed. Пожалуйста, смотрите прикрепленный snaphot1.jpeg, этот Assert произошел, когда я перемещал указатель мыши по элементам Ribbon Gallery (всплывающее окно расширенного режима), когда вызывался ForceRecalcLayout.
- В другом случае, если я добавляю подпункт (например, у нас есть "Новый стиль ячейки" в Галерее стилей Excel) в QAT с помощью контекстного меню, а затем пытаюсь создать новый стиль ячейки, я получаю Assert на CMFCRibbonButton. Обратитесь к snapshot2.jpg
1 ответ
Когда меняется только значок, достаточно сделать ленту недействительной.
Только если размер отдельных элементов изменяется, вам нужно вызывать RecalcLayout.
Я не вижу причин для вызова ForceRecalsLayout.