Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что лучше ложить в перемещаемую панель, фрейм или окно? 
V
    Опции темы
voov
Дата 6.8.2008, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 29.11.2007

Репутация: 8
Всего: 8



МДИ приложение. 
Создана панель на основе CControlBar. На ней должны располагаться дочерние окна (n штук).

1. Нужно чтобы дочерние окна заполняли всю клиентскую область панели не перекрываясь.
2. При изменении размера панели дочерние окна должны перестроиться, измениться в размере, чтобы соответствовать п.1.

Такую функциональность предоставляет главный фрейм в МДИ приложении - CMDIFrameWnd, метод void MDITile( );
 
Правильно ли будет вложить в перемещаемую панель фрейм унаследованый от CMDIFrameWnd, а в него дочерние окна унаследованые от CMDIChildWnd и при необходимости вызывать MDITile( );, чтобы обеспечить такую функциональность в панели? 
Нет ли подводных камней в случае, если на панели лежит фрейм, а не просто окно?

Или лучше не связываться с фреймами, а самому реализовать эту функциональность для окон?
PM MAIL   Вверх
Earnest
Дата 7.8.2008, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Думаю, фрейм в панели не прокатит - вряд ли его можно сделать дочерним. Кроме того, там должен быть MDICLIENT, иначе никакой Tile работать не будет.
В общем, криво это и, ИМХО, работать не будет...
Насчет дочерних контролов, не совсем понятно, что они собой представляют и как именно должны себя вести при ресайзе панели. Но, думаю, конкретную задачу вполне можно решить... 


--------------------
...
PM   Вверх
voov
Дата 7.8.2008, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 29.11.2007

Репутация: 8
Всего: 8



Что будут представлять собой дочерние контролы пока еще точно не решил. Все будет зависеть от того, каким путем пойти. Это могут быть просто окна, вью или диалоги.
Вести они себя должны примерно так же, как несколько открытых докуметнов в МДИ по команде ID_WINDOW_TILE_HORZ.

Если средствами CMDIFrameWnd этого не сделать или можно сделать, но криво, то тогда, пожалуй, сделаю простыми окнами и буду устанавлявать им размеры вручную.
Или может есть другие здравые идеи?
PM MAIL   Вверх
Earnest
Дата 8.8.2008, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Есть. Почитай про rebar (coolbar) - это как раз контейнер окон; заводишь band для каждого окна (окна могут быть любые - отдельные контролы, тулбары, диалог-бары), и оно их там само тасует - вроде бы именно так, как тебе надо.


--------------------
...
PM   Вверх
voov
Дата 8.8.2008, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 29.11.2007

Репутация: 8
Всего: 8



Все, сделал окнами.

Цитата(Earnest @  8.8.2008,  10:02 Найти цитируемый пост)
Есть. Почитай про rebar (coolbar) - это как раз контейнер окон; заводишь band для каждого окна (окна могут быть любые - отдельные контролы, тулбары, диалог-бары), и оно их там само тасует - вроде бы именно так, как тебе надо. 

Хм... буду иметь ввиду. Вкратце смотрел ребар и раньше, но не использовал его, так как нашел компонент перемещаемой панели покрасивше (поддерживает изменение размера в придоченом состоянии), а он наследован от CControlBar.
С ребаром немного поэксперементировал. Не получилось менять его размер в придоченом состоянии и не получилось мышкой таскать его по экрану или придочить к другой части фрейма. Чисто теоретический вопрос. Это я неглубоко копал или ребар не поддерживат этих функций?


PM MAIL   Вверх
Earnest
Дата 8.8.2008, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Переместить вроде действительно нельзя (он не умеет плавать). А насчет размера... он занимает всю ширину, насколько я понимаю, а по высоте - сколько надо. А вот размеры бандов можно менять (они тогда сворачиваются до кнопки), и взаимное положение тоже - там вроде флаг какой-то есть. 


--------------------
...
PM   Вверх
voov
Дата 8.8.2008, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 29.11.2007

Репутация: 8
Всего: 8



Ясно. Значит ребар для моей задачи не подходит. Мне нужно и размер менять в любом состоянии и плавать.
Ну с тем компонентом, что нашел, и окнами все работает.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0957 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.