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

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

Лента создается с помощью редактора.

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

  1. After every time I change the contents I call ForceRecalcLayout which most of the time results in an Assert usually on m_pHighlighted or m_pPressed. Please see the attached snaphot1.jpeg, this Assert happened while I was moving the mouse over the Ribbon Gallery elements (Expanded mode popup) while ForceRecalcLayout was called.
  2. On a different use case if I add the Sub Item (like we have "New Cell Style" in Styles Gallery of Excel) to the QAT using the context menu and then try to create a New cell style I get an Assert on the CMFCRibbonButton. Refer snapshot2.jpg

person Ankur Arora    schedule 02.12.2014    source источник
comment
я не использовал ForceRecalcLayout в коде, над которым я работаю, я всегда использовал метод CMFCRibbonBar::RecalcLayout, и он работал над всем, что я делал до сих пор, может быть, это неправильно, но это работает =) также , а где эти снимки, я их не вижу в вашем посте   -  person Robson    schedule 16.12.2014


Ответы (1)


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

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

Не вижу причин вызывать ForceRecalsLayout.

person xMRi    schedule 19.12.2014