none
CMFCToolBar::OnChangeVisualManager() вызывается неправданно большое количество раз RRS feed

  • Общие обсуждения

  • При изменении используемого в приложении стиля, выполняется обновление всех данных. Всё бы ничего, но для CMFCToolBar и его потомков имеются статические поля - CMFCToolBarImages, которые обновляются каждым окном на форме. Т.е. если на форме 3 потомка CMFCToolBar, то изображения обновляются 3 раза вместо одного (при этом производится полная перезагрузка ресурсов, а если ресурсы находятся вне приложения - подтормаживает переключение). Последовательность вызовов функций следующая:

    void __stdcall CMFCVisualManager::SetDefaultManager(CRuntimeClass* pRTI)
    void __stdcall CMFCVisualManager::AdjustToolbars()
    void CMFCToolBar::OnChangeVisualManager() // для каждого потомка CMFCToolBar
    void CMFCToolBar::UpdateImagesColor()
    void CMFCToolBarImages::OnSysColorChange()  // для каждого static поля типа CMFCToolBarImages


      Подляной можно считать что у TaskPane имеется свой собственный встроенный ToolBar, который находится в private части описания CMFCTasksPane, который никак не исключить стандартными средствами.

    Кто-нибудь с таким сталкивался и как обходили эту невязку?

    10 декабря 2010 г. 8:06

Все ответы

  • Уважаемый пользователь!


    В вашей теме отсутствует активность в течение последних 5 дней. При отсутствии каких-либо действий в течение 2 последующих дней, тема будет переведена в разряд обсуждений. Вы можете возобновить дискуссию, просто оставив сообщение в данной теме


    Для связи [mail]
    20 декабря 2010 г. 14:58