Цвет background у entry-контрола посредством API

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Сообщение StillZero »

Здравствуйте.

Как изменить цвет background-а entry-контрола посредством API ?

Спасибо.
Написал: PAA(27)
Аватара пользователя
Aragorn
Активист
Сообщения: 113
Зарегистрирован: 11 Июль 2005, 12:40
Откуда: Москва

Сообщение Aragorn »

посредством API
А нафиг?!
Написал: Aragorn(147)
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Сообщение StillZero »

А нафиг?!
надо, братишка, надо внатуре :) если палучится расскажу :)
Написал: PAA(27)
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Сообщение StillZero »

Здравствуйте всем.
Как изменить цвет 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)
Аватара пользователя
Aragorn
Активист
Сообщения: 113
Зарегистрирован: 11 Июль 2005, 12:40
Откуда: Москва

Сообщение Aragorn »

А где то место, где надо подменять класс? И чей именно? поподробнее кусочек, плз...
Написал: Aragorn(147)
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Сообщение StillZero »

2Aragorn:
Судя по вопросу :) подробнее не могу наверное...долго...
надо читать ... например http://www.pisoft.ru/verstak/Insider/col_subclass.htm там еще есть статьи, думаю разберешься, удачи тебе и респект переводчику
Написал: PAA(27)
Ответить