У меня есть несколько панелей инструментов / Menubars, полученных из кода Панель управления размерами что я хотел бы иметь возможность использовать с CFrameWndEx
но я не могу найти простой в использовании ShowPane
функции с CControlBar
производные объекты.
Например, с CFrameWnd
:
ShowControlBar(&m_ctlDimBar, m_ctlDimBar.IsVisible(), FALSE);
Необходимо заменить при использовании CFrameWndEx
, с:
ShowPane(&m_ctlDimBar, m_ctlDimBar.IsVisible(), FALSE, TRUE);
Пока не могу использовать m_ctlDimBar
как есть, потому что это CControlBar
производный объект, а не CBasePane
объект. Есть ли простой способ обойти несовместимость без необходимости переписывать код по ссылке?
CControlBar — это старый мир панелей инструментов, когда вы используете новый стиль MFC, вы должны использовать все компоненты из классов CMFC. К сожалению, не все новые классы начинаются с CMFC.
Так что если у вас есть CControlBar с некоторым содержимым, которое должно быть закреплено, используйте CDockingPane сейчас.
CControlBar был старым базовым классом для CToolBar и других.
Новые классы создаются следующим образом: CMFCToolBar -< CMFCBaseToolBar -> CPane -> CWnd
CPane — ближайший базовый класс для вас, а CDockingPane — класс окна.
это позволяет вам размещать свой собственный контент.
Самый простой способ узнать, как работает этот новый продукт, — создать пример приложения с помощью мастера. Чем смотреть на базовые классы, как реализованы разные виды окон. Описание ужасно и почти не существует. Но использование кода не так сложно. 😉
PS: После того, как я написал несколько комментариев, я попробую ответить.