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 хендел контролу. Возвращаемым значением должен быть указатель на кисть, которая будет применяться как задний фон изображения. Очень важно, что это сообщение приходит не самому контролу, а его родителя.Пример обработки сообщения приведен ниже:
Кроме того, можно скачать полный пример vs2005. В примере также используется Gdiplus для создания неоднородного фона формы.
При полном или частичном копировании необходимо указывать прямую ссылку на данную статью.
Олег (Дата )
Все вопросы и предложения высылайте на адрес soft_support@list.ru. Необходимо в заголовке указать название статьи.
Оставь свой отзыв
Дата: 22.11.10 |
e-mail: therat@rambler.ru Дата: 08.11.10 |