Меняю цвет текста и фона в edit control, обрабатывая сообщение WM_CTLCOLOREDIT, но сабж при этом остаётся таким, какой настроен в системе. Как поменять?
Код (Text): ... case WM_INITDIALOG: hBackBrush=CreateSolidBrush(GetSysColor(COLOR_WINDOW)); // цвет фона break; case WM_CTLCOLOREDIT: if (lParam == (LPARAM)GetDlgItem(hWnd,ID_ESLOG) && hBackBrush) { SetTextColor((HDC)wParam,0x0800000); // цвет текста return (int)hBackBrush; } break; case WM_CLOSE: DeleteObject(hBackBrush); break; ...
1) Хучить системные цвета GetSysColor (Но это не переносимо 2) Переписать весь контрол самому (Это не очень сложно как кажется Контрол какой : SINGLELINE or MULTILINE?
Мля, в чем трабла? Вот аттач моего конвертера из разных систем счисления десятичную и назад, написанный на асме, там я юзал этот метод и у мя ВСЕ прекрасно работает... Компилил в Масме 6.0
Хехехе... Все в тему. Я просто решил приукрасить прогу и поменял цвета фона и текста всех edit control'ов. Так что открывай исходник, а потом уж кричи что не в тему ))))
Pinkbyte Посмотрел. Не в тему. Внимательно читаем сабж и предыдущие посты. Речь идёт о выделенном (selected) тексте.
1)Попробуй хучить GetSysColor используя push ret 2)Перерисовывай выделеный текст после каждого сообщения 3)Написать новый Single-line контрол очень просто: -Структуру данных где храниться первый видимый, первый выделеный символ и т.д -В WM_PAINT просто рисуешь текст Если хочешь могу прислать source from Win2K
Честно говоря у меня меняется и цвет выделенного текста, только инверсивно, то есть был красным - стал синим. Но это скорее как эффект винды, нежели желаемый. Так что тут я действительно не ф тему
CnCVK Минус хука в том, что он влияет на все контролы, в т.ч. в стандартных диалогах. Видимо, придётся рисовать самому. А так хотелось простого варианта...