Как разместить MFC CFormView внутри CDockablePane, который был представлен в пакете дополнительных компонентов VS 2008 MFC?
Как разместить MFC CFormView внутри CDockablePane?
Ответы (5)
Посмотрите примеры BCGSoft, чтобы сделать это с помощью cview. Имена классов немного отличаются, но это более или менее то же самое, поскольку они предоставили Microsoft CDockablePane.
Я не смог найти такие образцы в образцах пакета функций MFC.
Все проекты, содержащие CFormView:
TasksPane TabControl TabbedView StatusBarDemo SetPaneSize MenuSubSet
Но ни в одном из проектов CFormView не встроен в CDockablePane.
Существует образец пакета функций, который делает это.
Однако я делаю следующее: я создал класс, производный от CDialog, и поместил его в DockablePane. Затем я создаю класс, производный от CFormView, и делаю его экземпляр переменной-членом закрепляемой панели. Каждую интересующую меня функцию (скорее всего, UpdateView() или как там она называется) я передаю классу, производному от CDialog. Таким образом, я могу обойти трудности встраивания структуры doc/view в свое приложение и при этом получить преимущества.
На самом деле есть несколько способов сделать это.
Если вы создадите свой собственный класс CFameWnd, а затем поместите экземпляр этого класса в панель CDockable, вы теперь можете поместить любой тип фреймворка, который вы хотите, внутри этого производного класса CFrameWnd.
Хитрость заключается в том, чтобы убедиться, что вы делаете создание в правильном порядке. Если вы попытаетесь вызвать его раньше, ваши внутренние представления никогда не будут созданы.
Вероятно, это такси может быть ключом к разгадке.
http://www.codeproject.com/KB/toolbars/sizecbar.aspx
Хотя он не использует CDockablePane, его концепция такая же. Я еще не пробовал CDockablePane и CFormView работать так, как описано на странице, но, взглянув на него, я чувствую, что все похоже.