И снова здравствуйте уважаемые!!! Вопрос.. какое сообщение нужно послать Edit-y чтобы в итоге активировалось сообщение WM_CTLCOLOREDIT и в нем уже изменить цвет текста в Edit-e ? Задача такая, нужно в зависимости от выбора итема со цветом в комбобокс изменить его и в Edit-e. Заранее спасибо!
Такая же проблема. Код (Text): case WM_CTLCOLOREDIT: { SetTextColor((HDC) wParam, RGB (0, 110, 255)); SetBkMode((HDC) wParam, TRANSPARENT); return (LONG) CreateSolidBrush(RGB(215, 235, 255)); } Как изменить цвет кисти в процессе выполнения программы? Можно пример кода?
Внутри обработки WM_CTLCOLOREDIT указать цвет не явным образом, а переменную, значение которой просто менять в нужном месте кода. Перерисовка окна делается с помощью InvalidateRect.
Всем снова здравствуйте, вынужден поднять вопрос по причине неработоспособности этого способа на Windows 98 Код (Text): szColor dd 0000000h,0444444h,0707070h,0101086h,00000FFh,05030E8h,00D24DAh ........... .ELSEIF uMsg== WM_CTLCOLOREDIT INVOKE GetDlgItem,hWnd,IDC_EDTNAME .IF EAX==lParam INVOKE SendDlgItemMessage,hWnd,IDC_CBCOLORNAME,CB_GETCURSEL,0,0 INVOKE SetTextColor,wParam,szColor[EAX*4] .ENDIF INVOKE GetStockObject,DC_BRUSH RET ................... .ELSEIF AX==IDC_CBCOLORNAME SHR EAX,16 .IF EAX==CBN_SELENDOK INVOKE GetDlgItem,hWnd,IDC_EDTNAME INVOKE InvalidateRect,EAX,NULL,FALSE .ENDIF .............. Код сводится к тому что при выборе цвета в ComboBox активируется INVOKE InvalidateRect, и заставляет перерисовываться Edit, и в WM_CTLCOLOREDIT выбирается цвет текста из массива цветов.. Дело в том что начиная с Windows 2000 этот код работает прекрасно а в Windows 98 вообще цвет не меняется... Помогите пожалуйста разобраться в чем дело !!! С благодарностью за внимание.
странно… у меня практически аналогичный код безупречно работал на W98SESP2. Единственное, что меня смущает — это Попробуйте закомментировать и задать цвет «жёстко». Сдаётся мне, что вся проблема в вышецитированной строке.
У меня просто всё это в диалоговой ф-ии обрабатывается, может я там что-то напартачил ? И ещё в этой же функции обрабатываюстя такие сообщения как WM_DRAWITEM, WM_MEASUREITEM, WM_ERASEBKGND, WM_CTLCOLORSTATIC может в win 98 их как то по особу надо обрабатывать.. если понадобится могу выложить как я их обрабатывал
Вопрос решен, всем огромное спасибо.. Дело было в строчке Код (Text): INVOKE GetStockObject,DC_BRUSH WIn98 видимо не понял эту кисть, с WHITE_BRUSH всё прекрасно работает.