Как мне изменить фон STATIC win32 control? - PullRequest
2 голосов
/ 13 июня 2009

Если родительская форма (текстового) статического элемента управления имеет узор на фоне, то область вокруг статического элемента управления представляет собой уродливое пятно сплошного цвета. Как можно закрасить фон статического элемента управления тем же шаблоном, который использует его родительское окно?

Я пробовал это,

SetClassLong(retval , GCL_HBRBACKGROUND, (LONG)stripes);

где retval был HWND, указывая на статический элемент управления, который я только что создал,
и полосы это HBRUSH, созданный из растрового изображения. Я тоже пытался с этим:

SetClassLongPtr(retval , GCLP_HBRBACKGROUND, (LONG)stripes);

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

Обновление

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

Неважно, понял.
SetBkMode(hdc, TRANSPARENT);

1 Ответ

2 голосов
/ 13 июня 2009

Вы можете установить цвет фона для статического элемента управления, обработав сообщение WM_CTLCOLOR .

Из документации

Если приложение обрабатывает это сообщение, оно возвращает дескриптор щетка. Система использует кисть для закрасить фон элемента управления.

В сообщении также передается указатель на контекст дисплея, который вы можете использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...