Blog. Just Blog

Переключение окна в полноэкранный режим и обратно

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Образ мышления: Assembler | Автор: ManHunter
Смотрел тут очередную киношку на своем любимом плеере Light Alloy и впервые за много лет обратил внимание, как он переключается в полноэкранный режим, а затем обратно. Нет, про само переключение, естественно, я знал и использовал, просто внезапно захотелось сделать что-нибудь подобное для оконного приложения на не менее любимом Ассемблере.

Вот обработчик переключения. Он будет двухпозиционный, то есть если окно уже находится в полноэкранном режиме, то вернет его к исходному виду, а иначе развернет на полный экран. Естественно, вы можете разделить его на два отдельных события или оставить только нужную часть, например, только переход в полноэкранный режим.
  1.         invoke  GetWindowLong,[hwnddlg],GWL_STYLE
  2.         ; EBX - текущий стиль окна
  3.         mov     ebx,eax
  4.         test    ebx,WS_OVERLAPPEDWINDOW
  5.         jz      .fullscreen_off
  6.  
  7. .fullscreen_on:
  8.         and     ebx,not WS_OVERLAPPEDWINDOW
  9.         invoke  SetWindowLong,[hwnddlg],GWL_STYLE,ebx
  10.         invoke  ShowWindow,[hwnddlg],SW_MAXIMIZE
  11.         jmp     .processed
  12.  
  13. .fullscreen_off:
  14.         or      ebx,WS_OVERLAPPEDWINDOW
  15.         invoke  SetWindowLong,[hwnddlg],GWL_STYLE,ebx
  16.         invoke  ShowWindow,[hwnddlg],SW_RESTORE
  17.         jmp     .processed
При наличии нескольких мониторов окно будет развернуто на том, где оно в текущий момент находится. За видимость панели задач переживать не надо. Когда система обнаружит приложение, которое переключилось в полноэкранный режим, то панель задач будет спрятана автоматически. Дополнительных операций для этого выполнять не надо.

В приложении пример программы с исходным текстом, которая по правому клику мышки на окне переключается в полноэкранный режим и обратно.

Пример программы с исходным текстом (FASM)Пример программы с исходным текстом (FASM)

Toggle.Fullscreen.Demo.zip (1,993 bytes)


Поделиться ссылкой ВКонтакте
Просмотров: 1311 | Комментариев: 0

Метки: Assembler, окна
Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
Комментариeв нет

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.0059 сек.) / Память: 4.5 Mb
Наверх