WM_SIZE

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

Ответить
Loki
Сообщения: 10
Зарегистрирован: 30 ноя 2004, 17:10
Откуда: Belarus

02 дек 2004, 13:39

Как правильно обработать WM_SIZE на MFC, что бы все мои контролы в окне тоже ресайзились?
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

02 дек 2004, 14:50

В WTL для этого есть очень удобный класс CDialogResizer. Он всё делает автоматически. Возможно такой класс есть и для MFC, но я про него не слышал. Для MFC напрашивается решение "в лоб" (если класса-ресайзера не найдётся): в хэндлере OnSize делаем для всех контролов MoveWindow, параметры подбираются таким образом, чтобы ресайзин осуществлялся в соответствии с желанием программиста.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Loki
Сообщения: 10
Зарегистрирован: 30 ноя 2004, 17:10
Откуда: Belarus

03 дек 2004, 19:12

Так вот в том то и проблема, что MoveWindow у меня не получилось, бо он всё двигает относительно экранных координат, да и ваще там странно как-то всё сделано...
А CDialogResizer, такого не нашёл...
Может у кого есть рабочий пример? Мне бы куска кода хватило. :)
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

03 дек 2004, 19:50

Для преобразования координат используй ClientToScreen, ScreenToClient.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Loki
Сообщения: 10
Зарегистрирован: 30 ноя 2004, 17:10
Откуда: Belarus

06 дек 2004, 15:50

Ага, помогло.
Спасибо.
Ответить