
Приложение с постоянно активным окном
В Windows, когда окно становится активным или наоборот теряет фокус, меняется его визуальный стиль. В зависимости от выбранной темы, меняется цвет кнопок в заголовке, увеличивается или уменьшается тень от окна, да и сам заголовок тоже меняет цвет. А можно ли сделать так, чтобы окно не меняло визуальный стиль? Можно. Реализуется это таким несложным трюком. Когда окну надо поменять визуальный стиль в зависимости от активности, ему отправляется сообщение WM_NCACTIVATE с соответствующим параметром. Значит в наше приложение надо добавить обработку этого сообщения.Code (Assembler) : Убрать нумерацию
- ; (Де)активировать заголовок окна?
- cmp [msg],WM_NCACTIVATE
- je .activate_window
- ...
- ...
- ...
- .activate_window:
- ; Деактивировать?
- cmp [wparam],FALSE
- jne @f
- ; Оставить заголовок активным
- mov [wparam],TRUE
- @@:
- ; Отправить сообщение дальше
- invoke DefWindowProc,[hwnddlg],[msg],[wparam],[lparam]
- jmp .processed
Конечно, возникает логичный вопрос зачем это вообще все надо? Например, ваше приложение создает виджет или тулбар в виде окна, которое должно постоянно находиться на экране. Так вот, для таких окон как раз желательно применить этот трюк, чтобы они выглядели всегда одинаково, неважно, активен виджет или нет.
В приложении пример программы с исходным текстом, окно которой всегда выглядит активным, независимо от фактической активности самого окна.
Просмотров: 1097 | Комментариев: 0

Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
Комментариeв нет

Добавить комментарий
Заполните форму для добавления комментария
