CSizingControlBarCF в MDI
От: uni Россия  
Дата: 23.09.05 15:39
Оценка:
Не могу справиться. Ситуация такая. Сабжевый компонент использую в MDI приложении (CMultiDocTemplate). Проблема первая — при попытке изменения размера бара (тащим за край) размер не меняется, только если принудительно не дернуть за главное окно или щёлкнуть по шапке тулбара. Не пойму как сказать тулбару, чтобы он и в MDI внутри менял свойй размер при таскании за его сплиттер. Проблема вторая. Тут надо отметить, что тулбар подстраивает под себя клиентское окно, т.е. меняет его размеры, если особо их где-то не оговорить. Я создал простое скно унаследованное от CWnd и расположил его внутри тулбара. Когда я выношу тулбар во вне, т.е. он плавает, то возникает неприятная ситуация — плавающее окно свёртывается до почти точки Мне кажется, что это как-то связано с автоматической настройкой клиентского окна и при отсутсвии каких-либо ограничений от последнего тулбар свертывается в точку. Мне нужно, чтобы при плавании окна тулбара оно имело заданные размеры окна — неменьше какого-то размера. Как, например, в примерах к тулбару Demo2. Там если вытащить тулбар, то он не коллапсирует. В остальном моё приложение практически такое же как и Demo2, всё также красиво, за исключением 2 проблем. Помогите. Заранее спасибо.
Re: CSizingControlBarCF в MDI
От: uni Россия  
Дата: 23.09.05 18:30
Оценка:
Здравствуйте, uni, Вы писали:

uni>Не могу справиться. Ситуация такая. Сабжевый компонент использую в MDI приложении (CMultiDocTemplate). Проблема первая — при попытке изменения размера бара (тащим за край) размер не меняется, только если принудительно не дернуть за главное окно или щёлкнуть по шапке тулбара. Не пойму как сказать тулбару, чтобы он и в MDI внутри менял свойй размер при таскании за его сплиттер. Проблема вторая. Тут надо отметить, что тулбар подстраивает под себя клиентское окно, т.е. меняет его размеры, если особо их где-то не оговорить. Я создал простое скно унаследованное от CWnd и расположил его внутри тулбара. Когда я выношу тулбар во вне, т.е. он плавает, то возникает неприятная ситуация — плавающее окно свёртывается до почти точки Мне кажется, что это как-то связано с автоматической настройкой клиентского окна и при отсутсвии каких-либо ограничений от последнего тулбар свертывается в точку. Мне нужно, чтобы при плавании окна тулбара оно имело заданные размеры окна — неменьше какого-то размера. Как, например, в примерах к тулбару Demo2. Там если вытащить тулбар, то он не коллапсирует. В остальном моё приложение практически такое же как и Demo2, всё также красиво, за исключением 2 проблем. Помогите. Заранее спасибо.


На счёт второй проблемы кое-что тут нашёл в форуме по моей теме:
Re: CControlBar — отловить момент когда docking стал floatin
Вот в этот момент перехода окно бара и коллапсирует. Причём щелкнув на нём окно принимает минимальные размеры для бара и можно менять размеры как обычно. На счёт первой проблемы — там не перерисовывается окно тулбара. Допустим окно тулбара прилеплено к нижнему краю окна, тогда не получается менять его высоту, таская за верхний край тулбара. Не могу найти примера работы этого контрола совместно с MDI.
Re[2]: CSizingControlBarCF в MDI
От: uni Россия  
Дата: 23.09.05 19:16
Оценка:
Пример работы с MDI нашёл в третьем примере SCBDemo3_src.zip на сайте
здесь

Извините за невнимательность. Я скачал только два примера. Третий после компиляции не имеет никаких проблем, о которых я упомянул выше. Сравню, разберусь.
Re[3]: CSizingControlBarCF в MDI
От: Аноним  
Дата: 25.09.05 14:00
Оценка:
Здравствуйте, uni, Вы писали:

uni>Пример работы с MDI нашёл в третьем примере SCBDemo3_src.zip на сайте

uni>здесь

uni>Извините за невнимательность. Я скачал только два примера. Третий после компиляции не имеет никаких проблем, о которых я упомянул выше. Сравню, разберусь.


Всё оказалось не так просто. Этот проект пересобранный для создания и работы в DLL не работает также. Шпионом удалось сравнить две реализации плавающих тулбаров: в Exe'шном исполнении и в исполнении dll. Оказалось, почему-то тулбары в dll не принимают сообщений об изменении своего окна при изменении _своего_ размера. Когда я меняю размер окна MDI приложения, то размеры тулбара меняются, когда же пробую изменить размер самой панельки, то при отпускании левой кнопы мыши ничего не происходит. Меня очень достало это. Чего только я не придумывал, наконец я просто в обработчике OnLButtonUp послал MDI окну сообщение SIZE_RESTORED с соотв-щими параметрами. Проблему удалось таким образом решить. Панельки-тулбары теперь меняют (принудительно) свой размер. Но осталась ещё одна проблема — при перетаскивании тулбара вне окна, т.к. он начинает плавать, он "не хороший контрол" коллапсирует зараза до точки, чего в демо не происходит. И опять я думаю виновато не получение некоего сообщения, которое и заставило бы контролл правильно отрисоваться. Поступить также тут как я сделл выше немогу, т.к. обработчик отжатия левой кнопы мыши почему-то не срабатывает, а как отловить момент перехода в плавающее состояние не пойму.

Дайте совет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.