![]() |
|
![]() ![]() ![]() |
|
voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
МДИ приложение.
Создана панель на основе CControlBar. На ней должны располагаться дочерние окна (n штук). 1. Нужно чтобы дочерние окна заполняли всю клиентскую область панели не перекрываясь. 2. При изменении размера панели дочерние окна должны перестроиться, измениться в размере, чтобы соответствовать п.1. Такую функциональность предоставляет главный фрейм в МДИ приложении - CMDIFrameWnd, метод void MDITile( ); Правильно ли будет вложить в перемещаемую панель фрейм унаследованый от CMDIFrameWnd, а в него дочерние окна унаследованые от CMDIChildWnd и при необходимости вызывать MDITile( );, чтобы обеспечить такую функциональность в панели? Нет ли подводных камней в случае, если на панели лежит фрейм, а не просто окно? Или лучше не связываться с фреймами, а самому реализовать эту функциональность для окон? |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Думаю, фрейм в панели не прокатит - вряд ли его можно сделать дочерним. Кроме того, там должен быть MDICLIENT, иначе никакой Tile работать не будет.
В общем, криво это и, ИМХО, работать не будет... Насчет дочерних контролов, не совсем понятно, что они собой представляют и как именно должны себя вести при ресайзе панели. Но, думаю, конкретную задачу вполне можно решить... -------------------- ... |
|||
|
||||
voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
Что будут представлять собой дочерние контролы пока еще точно не решил. Все будет зависеть от того, каким путем пойти. Это могут быть просто окна, вью или диалоги.
Вести они себя должны примерно так же, как несколько открытых докуметнов в МДИ по команде ID_WINDOW_TILE_HORZ. Если средствами CMDIFrameWnd этого не сделать или можно сделать, но криво, то тогда, пожалуй, сделаю простыми окнами и буду устанавлявать им размеры вручную. Или может есть другие здравые идеи? |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Есть. Почитай про rebar (coolbar) - это как раз контейнер окон; заводишь band для каждого окна (окна могут быть любые - отдельные контролы, тулбары, диалог-бары), и оно их там само тасует - вроде бы именно так, как тебе надо.
-------------------- ... |
|||
|
||||
voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
Все, сделал окнами.
Хм... буду иметь ввиду. Вкратце смотрел ребар и раньше, но не использовал его, так как нашел компонент перемещаемой панели покрасивше (поддерживает изменение размера в придоченом состоянии), а он наследован от CControlBar. С ребаром немного поэксперементировал. Не получилось менять его размер в придоченом состоянии и не получилось мышкой таскать его по экрану или придочить к другой части фрейма. Чисто теоретический вопрос. Это я неглубоко копал или ребар не поддерживат этих функций? |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Переместить вроде действительно нельзя (он не умеет плавать). А насчет размера... он занимает всю ширину, насколько я понимаю, а по высоте - сколько надо. А вот размеры бандов можно менять (они тогда сворачиваются до кнопки), и взаимное положение тоже - там вроде флаг какой-то есть.
-------------------- ... |
|||
|
||||
voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
Ясно. Значит ребар для моей задачи не подходит. Мне нужно и размер менять в любом состоянии и плавать.
Ну с тем компонентом, что нашел, и окнами все работает. |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |