Статьи / Static с прозрачным фоном

Static с прозрачным фоном


Отправить ссылку:

Создания элемента Static с прозрачным фоном

Введение

При написании приложения на WTL столкнулся с проблемой создания элемента Static с прозрачным задним фоном. Вся сложность заключалась в том, что задний фон формы был не однородный, а градиентный. Попытки перегрузить метод WM_PAINT и WM_ERASEBKGND, а так же установки свойства TRANSPARENT не увенчались успехом. В лучшем случае пришлось бы самому использовать TextOut для ввода текста, не говоря о том, что в элементы Static входят ещё и элементы Radio, так что такое решение не подошло бы.

Решение проблемы с помощью WM_CTLCOLORSTATIC

Для решения проблемы пришлось прибегнуть к сообщению WM_CTLCOLORSTATIC. Стоит отметить, что существует целый ряд подобных сообщений: WM_CTLCOLORBTN, WM_CTLCOLORDLG, WM_CTLCOLOREDIT, WM_CTLCOLORLISTBOX, WM_CTLCOLORSCROLLBAR. Вернёмся к WM_CTLCOLORSTATIC, сообщение в параметре wParam передаёт контекст устройства и lParam хендел контролу. Возвращаемым значением должен быть указатель на кисть, которая будет применяться как задний фон изображения. Очень важно, что это сообщение приходит не самому контролу, а его родителя.
Пример обработки сообщения приведен ниже:
В примере, который вы можете скачать, мы устанавливаем прозрачный фон только для одного Static элемента.
Кроме того, можно скачать полный пример vs2005. В примере также используется Gdiplus для создания неоднородного фона формы.

При полном или частичном копировании необходимо указывать прямую ссылку на данную статью.



Олег (Дата )

Все вопросы и предложения высылайте на адрес soft_support@list.ru. Необходимо в заголовке указать название статьи.

Оставь свой отзыв


Ответьте на вопрос (ответ маленькими буквами)* :
Название нашей планеты?


Дата: 22.11.10

e-mail: therat@rambler.ru
Дата: 08.11.10