| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > SDI приложение и WM_MOVE |
| Автор: kurlyak 8.3.2013, 11:26 | ||
Вобщим пишу SDI приложение. Ограничил размеры окна на 500 и 250 по x,y (мне так надо).
Теперь другая проблема. Вот я запускаю мое приложение- окно появляеться на экране. Все нормально, размеры окна изменить нельзя- жестко 500 на 250. Но когда щелкаю мышей дважды на нижней кромке окна или на верхней кромке окна (но не на заголовке где название приложения) окно перемещаеться под самый верх экрана. Я пробывал еще разные варианты- например окно может переместиться в самый верх и развернуть нижнюю кромку до самого низу рабочего стола - то есть окно по высоте становиться как высота рабочего стола- причем с левой и правой кромками окна такого не происходит- жестко ширина 500. И так как я запретил изменение размеров окна, то после дв. щелщка на верх.ниж.кромках- оно не разворачиваеться от верху рабочего стола до низу рабочего стола (сохраняя ширину при этом) а просто перемещаеться в самый верх рабочего стола. Короче мне надо что бы окно не прыгало по рабочему столу, когда пользователь может два раза щелкнуть на ниж.верх.кромке окна. Как я понимаю за перемещение окна отвечает WM_MOVE. Но если я вобще переопределю и заблокирую WM_MOVE - то пользователь по желанию не сможет перемещать окно. То есть мне надо что бы отключить это перемещение окна по дв. наж. мыши на ниж.верх. кромках, но сохранить возможность перемещения окна при желании пользователя. Хто понял- о чем я, прошу подсказать. |
| Автор: Albor 9.3.2013, 16:46 |
| запретить изменение размеров окна и задать исходный размер можно в PreCreateWindow(). Нужно просто убрать стиль WS_THICKFRAME в параметре style структуры CREATESTRUCT, передаваемой в функцию и задать параметры cx и cy. И ещё, сделав эти изменения вы можете не увидеть результата, так как программа уже запускалась и есть запись в реестре. Нужно удалить всю ветвь, связанную с программой и после этого вновь запустить свою прогу. |
| Автор: kurlyak 11.3.2013, 11:23 |
| Спасибо буду пробовать. |
| Автор: kurlyak 17.3.2013, 12:32 |
| Попробовал вобщим WS_THICKFRAME - теперь не могу менять размеры окна. А мне надо что бы пользователь мог менять размеры окна. Я объясняю второй раз в чем проблема. У окна есть нижняя и верняя кромка. Когда два раза щелкаю мышей на нижней кромке в моей программе- окно разворачиваеться во всю высоту экрана, но по ширине остаеться как раньше. Как это заблокировать что бы окно не разворачивалось на всю высоту экрана? У меня Вин7 может под ХР по другому это работает. |
| Автор: Dem_max 17.3.2013, 16:24 | ||
Чтобы работало как мне помниться нужно не ставить одинаковые цифры
|
| Автор: Dem_max 17.3.2013, 19:57 |
| Попробуй это сообщение обрабатывать http://vsokovikov.narod.ru/New_MSDN_API/Window/notify_wm_nccalcsize.htm |