Как раскрыть окно во весь экран?
От: Павел Блудов Россия  
Дата: 24.07.03 05:09
Оценка: 103 (4) +2
Статья:
Как раскрыть окно во весь экран?
Автор(ы): Павел Блудов


Авторы:
Павел Блудов

Аннотация:
Многие программы умеют изменять свои размеры так, чтобы максимально увеличить размер рабочей области за счет меню, заголовка, панелей управления и строки состояния. Как правило, этот режим включается через меню View->Full Screen.

Причем разные программы делают это по-разному: Developer Studio и Internet Explorer, например, закрывают панель задач, в то время как программы пакета Microsoft Office 2000 оставляют ее на экране. Кроме того, одни MDI-программы увеличивают также и окно активного документа, другие оставляют его как есть.

Самый простой способ заключается в том, чтобы спрятать все панели управления и и изменить размеры окна таким образом, чтобы размеры рабочей области приложения совпали с размерами рабочего стола. Так устроен полноэкранный режим в Developer Studio. К сожалению, в системах с несколькими мониторами это недостаточно. Заголовок, меню и рамка окна вылезут на соседние мониторы и будут торчать там перекрывая нужную информацию.

Решение должно быть более комплексным...
Re: That's good, but not good enough
От: Serguei666 Беларусь  
Дата: 28.07.03 18:56
Оценка: 20 (2)
Здравствуйте, Павел Блудов, Вы писали:

ПБ>Решение должно быть более комплексным...


Интересно у вас написано. Про два монитора я и не подумал, когда делал 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" (легкое решение), либо менять размеры окошка и приспосабливать его под новые условия (менее легкое решение).
Хотите сказать 'спасибо'? Тогда поставьте оценку
Re[2]: That's good, but not good enough
От: Блудов Павел Россия  
Дата: 29.07.03 00:55
Оценка:
Здравствуйте, Serguei666, Вы писали:

S>Интересно у вас написано. Про два монитора я и не подумал, когда делал FullScreen mode. Но и вы кое что забыли (а я не забыл


Спасибо, Сергей!
IMHO, очень правильно реализован fullscreen в InternetExplorer 6.0, а может и в более ранних версиях.
Но он не MDI, в MSDI-приложение. Будет время, внесу предложенные Вами изменения.

Павел.
Re: Как раскрыть окно во весь экран?
От: Аноним  
Дата: 01.06.05 16:20
Оценка: 14 (1)
Здравствуйте, Павел Блудов, Вы писали:

ПБ>Статья:

ПБ>Как раскрыть окно во весь экран?
Автор(ы): Павел Блудов


Интересная статья, но не всё продумано.
Например, в MDI можно переключаться между документами, или закрывать их (Ctrl+F4 Ctrl+F6). Причём к каждому типу документа привязано своё меню. Тут же меню восстанавливается без учета того, какой документ сейчас активен.
Кроме того в функции OnMDIActivate нужно проверять указатели pActivateWnd и pDeactivateWnd, они могут быть нулевые.

Павел.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.