Blog. Just Blog

Приложение с постоянно активным окном

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Образ мышления: Assembler | Автор: ManHunter
В Windows, когда окно становится активным или наоборот теряет фокус, меняется его визуальный стиль. В зависимости от выбранной темы, меняется цвет кнопок в заголовке, увеличивается или уменьшается тень от окна, да и сам заголовок тоже меняет цвет. А можно ли сделать так, чтобы окно не меняло визуальный стиль? Можно. Реализуется это таким несложным трюком. Когда окну надо поменять визуальный стиль в зависимости от активности, ему отправляется сообщение WM_NCACTIVATE с соответствующим параметром. Значит в наше приложение надо добавить обработку этого сообщения.
  1.         ; (Де)активировать заголовок окна?
  2.         cmp     [msg],WM_NCACTIVATE
  3.         je      .activate_window
  4.         ...
  5.         ...
  6.         ...
  7. .activate_window:
  8.         ; Деактивировать?
  9.         cmp     [wparam],FALSE
  10.         jne     @f
  11.         ; Оставить заголовок активным
  12.         mov     [wparam],TRUE
  13. @@:
  14.         ; Отправить сообщение дальше
  15.         invoke  DefWindowProc,[hwnddlg],[msg],[wparam],[lparam]
  16.         jmp     .processed
Таким образом, когда Windows дает окну команду перерисоваться в неактивном виде, наше приложение принудительно заставляет окно сохранять активный визуальный стиль.

Конечно, возникает логичный вопрос зачем это вообще все надо? Например, ваше приложение создает виджет или тулбар в виде окна, которое должно постоянно находиться на экране. Так вот, для таких окон как раз желательно применить этот трюк, чтобы они выглядели всегда одинаково, неважно, активен виджет или нет.

В приложении пример программы с исходным текстом, окно которой всегда выглядит активным, независимо от фактической активности самого окна.

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

Active.Looking.Window.Demo.zip (2,009 bytes)


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

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

Комментарии

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

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

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

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