Стыковка производного окна CControlBar - PullRequest
0 голосов
/ 02 октября 2008

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

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

Ответы [ 2 ]

1 голос
/ 10 октября 2008

Alf,

В случае VS, сплиттер не используется: Представление ресурса - это изменяемая панель управления (она выглядит и выглядит как сплиттер, но это не CSplitterWnd). Остальное - дочерний фрейм (с вкладками или MDI. Перейдите в Инструменты / Параметры / Среда / Общие и выберите «Несколько документов», чтобы убедить себя). Линейка является частью (панели управления?) Дочернего фрейма.

В вашем случае, я думаю, вам не нужен сплиттер на 3 панели. Вам нужен двухпанельный сплиттер, и панель управления должна быть частью вашего представления (это не будет CControlBar как таковой). Если вы не используете MDI, в этом случае вы можете сделать его настоящим ControlBar в вашем дочернем фрейме.

НТН

0 голосов
/ 04 октября 2008

Serge, Я прошу прощения, я не очень ясно. Разделитель будет между представлением ресурса и линейкой линейки. Это будет выглядеть так:

Просмотр ресурсов | Вертикальная линейка | View

В любом случае я нашел (теперь очевидный) ответ: разделить основной фрейм на три окна:

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)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...