В общем, пытаюсь сделать несколько DialogBar'ов, которые лепятся друг на друга и ресайзятся. Посему есть два вопроса:
1. Как отследить то, что Бар "прилип" к границе клентской области окна(нужно, чтобы выровнять элемены управления)(необходимо имено сообщение или общий механизм реакции пррограммы на это действие)
2. Вызываю SetBarSyle(GetBarStyle()|CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC), однако контрол не ресайзится, когда "прилеплен"
Здравствуйте, 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.
Спасибо вам огромное. Жаль, на работе стоит MSVS 6.0, aka '98 и получается, что воспользоваться прелестями современной науки и техники, а также ОС winXP не получится. Исправляю проект, написанный 11 лет назад (=. Придется писать ручками.
Здравствуйте, MadRook, Вы писали:
MR>Придется писать ручками.
Чтобы не писать совсем с нуля, советую посмотреть
CSizingControlBar. Насколько помню, это — далекий прародитель CDockablePane, вошедший в измененном виде сначала в широко известную платную GUI-библиотеку BCGControlBar, а потом — через несколько лет развития — в MFC Feature Pack. Хоть этот класс и порядочно устарел (шутка ли, 10 лет прошло!), но за неимением лучшего, думаю, вполне сойдет.
Здравствуйте, Hawk, Вы писали:
H>Здравствуйте, MadRook, Вы писали:
MR>>Придется писать ручками.
H>Чтобы не писать совсем с нуля, советую посмотреть CSizingControlBar. Насколько помню, это — далекий прародитель CDockablePane, вошедший в измененном виде сначала в широко известную платную GUI-библиотеку BCGControlBar, а потом — через несколько лет развития — в MFC Feature Pack. Хоть этот класс и порядочно устарел (шутка ли, 10 лет прошло!), но за неимением лучшего, думаю, вполне сойдет.
Не совсем верно. Сильно измененный CSizingControlBar действительно входил в BCGControlBar Standard Edition, но для Pro версии (та, что частично вошла в MFC), функциональность панелей была полностью переписана.