Dockable CScrollView в SDI
Используя VS2017, V15.6.2, неуправляемый C++:
Я знаю, что что-то упустил, но не могу понять это. Я хочу добавить элемент CDockablePane в существующее приложение SDI, которое уже имеет CScrollView в качестве основного вида. Мне нужно сделать панель представлением прокрутки. Я нашел некоторую информацию о том, как это сделать, но я не могу заставить его работать. Используя информацию из ответа от 2014 года под названием "MFC CView into CDockablePane", у меня есть два класса. CMapperPane, который наследуется от CDockablePane, и CMapperView, который наследуется от CScrollView. Таким образом, OnCreate для CMapperView выглядит так:
int CMapperPane::OnCreate (LPCREATESTRUCT lpCreateStruct)
{
if (CDockablePane::OnCreate (lpCreateStruct) == -1)
return -1;
CRuntimeClass *pClass = RUNTIME_CLASS (CMapperView);
// calling constructor using IMPLEMENT_DYNCREATE macro
CMapperView *pView = (CMapperView*) pClass->CreateObject ();
if (!pView->Create (NULL, NULL, AFX_WS_DEFAULT_VIEW, CRect (0,0,0,0),
this, AFX_IDW_PANE_FIRST, NULL)) {
return -1;
}
return 0;
}
Затем в мейнфрейме я создаю панель:
strTitle = "Mapper";
if (!m_MapperPane.Create (strTitle, this,
CRect (0, 0, 200, 200), TRUE, IDD_MAPPER_PANE, WS_CHILD)) {
return -1;
}
m_MapperPane.EnableDocking (CBRS_ALIGN_ANY);
DockPane ((CBasePane*) &m_MapperPane, AFX_IDW_DOCKBAR_RIGHT);
m_MapperPane.ShowPane (TRUE, FALSE, TRUE);
RecalcLayout ();
CMapperPane был создан с помощью мастера классов из диалогового окна без элементов управления.
Панель сопоставления появляется и является присоединяемой, но я не могу понять, как получить OnInitialUpdate или функции рисования представления, которые будут вызваны. Я сделал аналогичную вещь для другой закрепляемой панели, которая просто имеет поле для редактирования, и это работает. Но мне не нужно было наследовать от CScrollView в этом.
Этот метод работает или я далеко от базы здесь? Ошибочно ли начинать с диалога при создании CMapperPane? Если так, как еще? Нужно ли представлению свой кадр? Если так, то как?
Спасибо русь