Статья:
Как раскрыть окно во весь экран?Автор(ы): Павел Блудов
Авторы:
Павел Блудов
Аннотация:
Многие программы умеют изменять свои размеры так, чтобы максимально увеличить размер рабочей области за счет меню, заголовка, панелей управления и строки состояния. Как правило, этот режим включается через меню View->Full Screen.
Причем разные программы делают это по-разному: Developer Studio и Internet Explorer, например, закрывают панель задач, в то время как программы пакета Microsoft Office 2000 оставляют ее на экране. Кроме того, одни MDI-программы увеличивают также и окно активного документа, другие оставляют его как есть.
Самый простой способ заключается в том, чтобы спрятать все панели управления и и изменить размеры окна таким образом, чтобы размеры рабочей области приложения совпали с размерами рабочего стола. Так устроен полноэкранный режим в Developer Studio. К сожалению, в системах с несколькими мониторами это недостаточно. Заголовок, меню и рамка окна вылезут на соседние мониторы и будут торчать там перекрывая нужную информацию.
Решение должно быть более комплексным...
Здравствуйте, Павел Блудов, Вы писали:
ПБ>Решение должно быть более комплексным...
Интересно у вас написано. Про два монитора я и не подумал, когда делал FullScreen mode. Но и вы кое что забыли (а я не забыл
1. (не тестировал) А как ваше окно поведет себя, если пользователь screen resolution поменяет в момент, когда окно в Full Screen?
2. (тестировал лично, не работает) А как ваше окно себя поведет, если пользователь исполнил системную команду (доступную из context menu панели Start) "Tile windows Horizontally"? А я вам отвечу — плохо поведет. Размер изменится, но ни меню, ни Caption, ни тулбаров-статусбаров не появится.
Кстати, Visual 6 тоже себя отвратно ведет в таких ситуациях, что позволило мне сказать, что мой FullScreen mode лучше, чем Microsoft'овский в Visual 6, который был взят как образец.
Вывод: надо обрабатывать команды, которые система шлет окошку при изменении разрешения экрана и при исполнениии системных команд "Tile" & "Cascase" (Spy++ вам подскажет, какие именно команды) и в обработйике этих команд либо отменять режим "FullScreen" (легкое решение), либо менять размеры окошка и приспосабливать его под новые условия (менее легкое решение).
Здравствуйте, Serguei666, Вы писали:
S>Интересно у вас написано. Про два монитора я и не подумал, когда делал FullScreen mode. Но и вы кое что забыли (а я не забыл
Спасибо, Сергей!
IMHO, очень правильно реализован fullscreen в InternetExplorer 6.0, а может и в более ранних версиях.
Но он не MDI, в MSDI-приложение. Будет время, внесу предложенные Вами изменения.
Павел.
Здравствуйте, Павел Блудов, Вы писали:
ПБ>Статья:
ПБ>Как раскрыть окно во весь экран?Автор(ы): Павел Блудов
Интересная статья, но не всё продумано.
Например, в MDI можно переключаться между документами, или закрывать их (Ctrl+F4 Ctrl+F6). Причём к каждому типу документа привязано своё меню. Тут же меню восстанавливается без учета того, какой документ сейчас активен.
Кроме того в функции OnMDIActivate нужно проверять указатели pActivateWnd и pDeactivateWnd, они могут быть нулевые.
Павел.