Как я могу прикрепить производное окно CControlBar к середине окна разделителя (CSplitterWnd)? Я хочу, чтобы планка менялась при каждом перемещении разделителя.
Чтобы было немного понятнее, что мне нужно, представьте вертикальную линейку в редакторе диалоговых окон в Visual Studio (только MFC). Он перемещается всякий раз, когда изменяется размер древовидного представления.





Серж, Прошу прощения, я не очень понял. Разделитель будет между представлением ресурсов и линейкой. Это выглядело бы так:
Просмотр ресурсов | Вертикальная линейка | Вид
В любом случае я нашел (теперь очевидный) ответ: разделите основной фрейм на три окна:
m_wndSplitter.CreateStatic(this, 1, 3);
m_wndLeftPane.Create(&m_wndSplitter,WS_CHILD|WS_VISIBLE,m_wndSplitter.IdFromRowCol(0, 0));
m_ruler.Create(&m_wndSplitter,WS_CHILD|WS_VISIBLE,m_wndSplitter.IdFromRowCol(0, 1));
m_wndSplitter.CreateView(0, 2, pContext->m_pNewViewClass, CSize(300, 0), pContext);
SetActiveView((CScrollView*)m_wndSplitter.GetDlgItem(m_wndSplitter.IdFromRowCol(0, 2)));
Альф,
В случае VS сплиттер не используется: Представление ресурсов - это ControlBar с изменяемым размером (он выглядит и ощущается как разделитель, но это не CSplitterWnd). Остальное - дочерний фрейм (с вкладками или MDI. Перейдите в Инструменты / Параметры / Среда / Общие и выберите «Несколько документов», чтобы убедиться в этом). Линейка является частью (панелью управления?) Дочернего фрейма.
В вашем случае, я думаю, вам не нужен разделитель на 3 панели. Вам нужен разделитель на 2 панели, и панель управления должна быть частью вашего представления (это не будет CControlBar как таковой). Если вы не используете MDI, в этом случае вы можете сделать его настоящим ControlBar в своем дочернем фрейме.
HTH