Измените цвет строки заголовка приложения


С Delphi 7 пытается изменить цвет строки заголовка программного обеспечения из темы окна. Я видел код, который позволяет изменять все заголовки всех программ, но я просто хочу изменить свою программу.

Кто-нибудь видел/делал что-нибудь подобное? Не против заплатить за компонент, если это необходимо.

3 3

3 ответа:

Я считаю, что Windows отправляет сообщение WM_NCPAINT приложению, когда оно должно нарисовать рамку окна, включая строку заголовка. Поведение по умолчанию-это возврат к обработчику Windows по умолчанию, который рисует фрейм по умолчанию. Вы можете заменить это или перекрасить раздел заголовка сразу после этого.

Это выглядит как хороший пример: http://delphi.about.com/od/adptips2006/qt/draw_captionbar.htm

Ответ Stijn не является полным, так как заголовок и граница окна также будут перерисованы, когда оно (де-)активировано. Так что в дополнение к WM_NCPAINT Вам также нужно будет обрабатывать WM_NCACTIVATE. К сожалению, это не может быть просто заменено, так как в обработчике сообщений по умолчанию есть другой код (кроме кода чертежа), который необходимо выполнить. Но вызов обработчика по умолчанию, в свою очередь, приведет к тому, что сначала будут нарисованы заголовок и граница по умолчанию, которые затем нужно будет нарисовать с помощью ваш предполагаемый цвет, приводящий к мерцанию.

Один из способов обойти это-настроить область чертежа, с которой вызывается обработчик сообщений по умолчанию. Смотрите "рисование заголовка на XP с темами" для примера использования вызовов API Windows, которые должны легко переводиться на Delphi. Обратите внимание, что это относится только к тексту в строке заголовка, но принцип применим.

Вы можете взглянуть на библиотеку освежевания. ExpressSkin от DevExpress-хороший вариант.