Обновление до MFC Feature Pack

У меня есть несколько панелей инструментов / меню, полученных из панели управления размерами кода, которые я хотел бы использовать с CFrameWndEx но я не могу найти простой в использовании ShowPane функции с CControlBar производные объекты.

Например, с CFrameWnd:

ShowControlBar(&m_ctlDimBar, m_ctlDimBar.IsVisible(), FALSE);

Необходимо заменить при использовании CFrameWndEx, с:

ShowPane(&m_ctlDimBar, m_ctlDimBar.IsVisible(), FALSE, TRUE);

Пока не могу использовать m_ctlDimBar как есть, потому что это CControlBar производный объект, а не CBasePane объект. Есть ли простой способ обойти несовместимость без необходимости переписывать код по ссылке?

1 ответ

Решение

CControlBar - это старый мир панелей инструментов, когда вы используете новый стиль MFC, вы должны использовать все компоненты из классов CMFC. К сожалению, не все новые классы начинаются с CMFC.

Поэтому, если у вас есть CControlBar с некоторым содержимым, которое должно быть закреплено, используйте CDockingPane сейчас.

CControlBar был старым базовым классом для CToolBar и других.

Новые классы создаются следующим образом: CMFCToolBar - CPane -> CWnd

CPane - это ближайший базовый класс для вас, а CDockingPane - это класс окна, который позволяет вам размещать собственный контент.

Самый простой способ узнать, как работает этот новый продукт, - создать пример приложения с помощью мастера. Чем взглянуть на базовые классы, как реализованы разные виды окон. Описание ужасно и почти не существует. Но использование кода не так сложно.;)

PS: После того, как я написал несколько комментариев, я попробую ответить.

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