Сообщение прилепления CDialogBar'a
От: MadRook  
Дата: 12.01.10 12:11
Оценка:
В общем, пытаюсь сделать несколько DialogBar'ов, которые лепятся друг на друга и ресайзятся. Посему есть два вопроса:
1. Как отследить то, что Бар "прилип" к границе клентской области окна(нужно, чтобы выровнять элемены управления)(необходимо имено сообщение или общий механизм реакции пррограммы на это действие)
2. Вызываю SetBarSyle(GetBarStyle()|CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC), однако контрол не ресайзится, когда "прилеплен"
Re: Сообщение прилепления CDialogBar'a
От: Hawk Россия  
Дата: 12.01.10 16:17
Оценка: 2 (1)
Здравствуйте, MadRook, Вы писали:

MR>1. Как отследить то, что Бар "прилип" к границе клентской области окна(нужно, чтобы выровнять элемены управления)(необходимо имено сообщение или общий механизм реакции пррограммы на это действие)


А зачем это отслеживать? Элементы управления обычно выравниваются в обработчике WM_SIZE и этого достаточно.

MR>2. Вызываю SetBarSyle(GetBarStyle()|CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC), однако контрол не ресайзится, когда "прилеплен"


Эта константа — CBRS_SIZE_DYNAMIC — AFAIK, относится только к тулбарам. У CDialogBar размер фиксированный, определяемый в ресурсах диалога, и данная константа просто игнорируется. Остальные указанные константы также не нужны, т.к. CDialogBar понимает только CBRS_TOP, CBRS_BOTTOM, CBRS_NOALIGN, CBRS_LEFT, CBRS_RIGHT (здесь).

Вообще, CDialogBar — вещь примитивная, устаревшая, и его сейчас очень мало где используют в чистом виде (т.е. не в составе других контролов, а "как есть"). Если нужна полнофункциональная диалоговая панель с возможностью докинга и изменения размеров, см. CPaneDialog. Однако, с ним, по слухам (сам я с CPaneDialog не работал), бывают проблемы. Решение — использовать комбинацию CDockablePane + CDialogBar или CDockablePane + CFormView.
Re[2]: Сообщение прилепления CDialogBar'a
От: MadRook  
Дата: 14.01.10 12:46
Оценка:
Спасибо вам огромное. Жаль, на работе стоит MSVS 6.0, aka '98 и получается, что воспользоваться прелестями современной науки и техники, а также ОС winXP не получится. Исправляю проект, написанный 11 лет назад (=. Придется писать ручками.
Re[3]: Сообщение прилепления CDialogBar'a
От: Hawk Россия  
Дата: 14.01.10 17:33
Оценка: 3 (1)
Здравствуйте, MadRook, Вы писали:

MR>Придется писать ручками.


Чтобы не писать совсем с нуля, советую посмотреть CSizingControlBar. Насколько помню, это — далекий прародитель CDockablePane, вошедший в измененном виде сначала в широко известную платную GUI-библиотеку BCGControlBar, а потом — через несколько лет развития — в MFC Feature Pack. Хоть этот класс и порядочно устарел (шутка ли, 10 лет прошло!), но за неимением лучшего, думаю, вполне сойдет.
Re[4]: Сообщение прилепления CDialogBar'a
От: Аноним  
Дата: 01.03.10 18:28
Оценка: 2 (1)
Здравствуйте, Hawk, Вы писали:

H>Здравствуйте, MadRook, Вы писали:


MR>>Придется писать ручками.


H>Чтобы не писать совсем с нуля, советую посмотреть CSizingControlBar. Насколько помню, это — далекий прародитель CDockablePane, вошедший в измененном виде сначала в широко известную платную GUI-библиотеку BCGControlBar, а потом — через несколько лет развития — в MFC Feature Pack. Хоть этот класс и порядочно устарел (шутка ли, 10 лет прошло!), но за неимением лучшего, думаю, вполне сойдет.


Не совсем верно. Сильно измененный CSizingControlBar действительно входил в BCGControlBar Standard Edition, но для Pro версии (та, что частично вошла в MFC), функциональность панелей была полностью переписана.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.