Здравствуйте.
Как изменить цвет background-а entry-контрола посредством API ?
Спасибо.
Написал: PAA(27)
Цвет background у entry-контрола посредством API
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- StillZero
- Ветеран
- Сообщения: 454
- Зарегистрирован: 06 Июль 2005, 2:17
- Откуда: Хабаровск
- Контактная информация:
Здравствуйте всем.
Так как контролы у клары свои собственные...то...приходится идти в обход. Путем некоторых экспериментов выяснилось что можно поставить конролу атрибут TRANSPARENT, потом выставить стиль WS_BORDER, а потом оставалось только нарисовать белый (определенного цвета) BACKGROUND, поэтому и возник такой вопрос.
Как нарисовать background:
1. Необходимо засабклассить контрол.
2. Отлавливать событие WM_ERASEBKGND
3. В этом событии рисовать прямоугольник
Код процедуры сабклассинга:
WM_ERASEBKGND EQUATE(0014h)
loc:RECT GROUP(xflatRECT).
code
case winMsg
of WM_ERASEBKGND
hBrush#=xflatCreateSolidBrush(COLOR:WHITE)
xflatGetClientRect(hWnd,address(loc:RECT))
xflatFillRect(wParam,address(loc:RECT),hBrush#)
xflatDeleteObject(hBrush#)
end
RETURN(xflatCallWindowProc(GLO:ReturnAddr,hWnd,winMsg,wParam,lParam))
все.
Написал: PAA(27)
Как изменить цвет background-а entry-контрола посредством API ?
Было желание сделать флэт entry и text box контролы, также как это реализованно в C6. Мне было предложено убирать галку 3D look с окна и играться с обоями окна и цветами контрола - этот вариант не устраивал.А нафиг?!
Так как контролы у клары свои собственные...то...приходится идти в обход. Путем некоторых экспериментов выяснилось что можно поставить конролу атрибут TRANSPARENT, потом выставить стиль WS_BORDER, а потом оставалось только нарисовать белый (определенного цвета) BACKGROUND, поэтому и возник такой вопрос.
Как нарисовать background:
1. Необходимо засабклассить контрол.
2. Отлавливать событие WM_ERASEBKGND
3. В этом событии рисовать прямоугольник
Код процедуры сабклассинга:
WM_ERASEBKGND EQUATE(0014h)
loc:RECT GROUP(xflatRECT).
code
case winMsg
of WM_ERASEBKGND
hBrush#=xflatCreateSolidBrush(COLOR:WHITE)
xflatGetClientRect(hWnd,address(loc:RECT))
xflatFillRect(wParam,address(loc:RECT),hBrush#)
xflatDeleteObject(hBrush#)
end
RETURN(xflatCallWindowProc(GLO:ReturnAddr,hWnd,winMsg,wParam,lParam))
все.
Написал: PAA(27)
- StillZero
- Ветеран
- Сообщения: 454
- Зарегистрирован: 06 Июль 2005, 2:17
- Откуда: Хабаровск
- Контактная информация:
2Aragorn:
Судя по вопросу подробнее не могу наверное...долго...
надо читать ... например http://www.pisoft.ru/verstak/Insider/col_subclass.htm там еще есть статьи, думаю разберешься, удачи тебе и респект переводчику
Написал: PAA(27)
Судя по вопросу подробнее не могу наверное...долго...
надо читать ... например http://www.pisoft.ru/verstak/Insider/col_subclass.htm там еще есть статьи, думаю разберешься, удачи тебе и респект переводчику
Написал: PAA(27)