Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[54.172.95.106] |
|
Сообщ.
#1
,
|
|
|
Создаю эдит:
hwTx = CreateWindowExW(392, StrPtr("Edit") _ , StrPtr("ля-ля-ля", WS_CHILD Or WS_VISIBLE Or WS_BORDER _ , 0, 0, 200, 30 _ , Me.hwnd, 0, App.hInstance, ByVal 0) Пытаюсь поменять фон вот так: Private Sub Command1_Click() Dim hdcT As Long hdcT = GetWindowDC(hwTx) SetBkColor hdcT, &HFF00& End Sub и вот так: Private Sub Command2_Click() SendMessageW hwnd, ByVal EM_SETBKGNDCOLOR, ByVal 0, ByVal &HFF& End Sub Ни то, ни другое результата не даёт. Меняю фон у родителя - выясняется, что эдит при перерисовке берёт цвет как раз у родителя. Что я делаю не так? Прикреплённый файлbackcolor.zip (1,98 Кбайт, скачиваний: 135) |
Сообщ.
#2
,
|
|
|
Цитата Артур @ Пытаюсь поменять фон вот так: Чтобы раскрасить Edit, надо обрабатывать сообщение WM_CTLCOLOREDIT. И надо не один цвет указывать, а сразу 3 - текста, фона текста (цвет знакоместа) и фона контрола. |
Сообщ.
#3
,
|
|
|
ЫукпШ
Спасибо Да, как то так:) Субклассирую, затем: If uMsg = WM_CTLCOLOREDIT Then SetBkColor wParam, BkColor 'перерисовываю фон под текстом WinProc = hBrush 'возвращаю кисть для перерисовки остального фона Exit Function |
Сообщ.
#4
,
|
|
|
Цитата Артур @ Субклассирую, затем: Вот эти тонкости я не знаю. WM_COLORxxx (цветовые сообщения) контролов пересылаются их родителю, каждый раз, когда контрол перерисовывается. Искать и обрабатывать эти сообщения в оконной процедуре самого контрола я не пробовал. Цитата ... An edit control that is not read-only or disabled sends the WM_CTLCOLOREDIT message to its parent window when the control is about to be drawn. ... Так что не совсем понятно, кого субклассировать |
Сообщ.
#5
,
|
|
|
Не, ну, субклассирую я обоих - и контрол, и родителя. Конкретно для перерисовки фона - ловлю ведь WM_CTLCOLOREDIT, значит это в родителе. Это ведь контрол шлет родителю, так что в сам контрол, на сколько я понимаю, это сообщение и не приходит.
|