Консультация № 70234
10.01.2007, 03:38
0.00 руб.
0 1 1
Здравствуйте! Пишу программу на C++, в которой используется несколько элементов управления (дочерних окон) класса "edit" с установленным стилем ES_READONLY. При этом цвет фона в таких окнах автоматически становится серым, а мне нужно оставить обычный белый (т.е., если не ошибаюсь, COLOR_WINDOW).
Очень смутно представляю себе, что нужно или обрабатывать сообщения WM_CTLCOLORSTATIC, или можно создать свой класс элемента из стандартного (при помощи GetClassInfo и RegisterClass) указав в новом классе нужный цвет. Но как реализовать какой-либо из этих или другой варианты, пока не очень пойму, - только-только учусь.
Пожалуйста, дайте пример кода, сопроводив его, по возможности, комментариями.
Спасибо.
P.S. Я не использую MFC, нужен чистый WinAPI.

Обсуждение

Неизвестный
10.01.2007, 09:37
общий
это ответ
Здравствуйте, Fole!
Полагаю проще использовать следующую API функцию для готового edit‘а - SetClassLong(hWnd, GCL_HBRBACKGROUND, (HBRUSH)COLOR_WINDOW+1)
Правда это оправдано только в том случае, если все ваши edit‘ы на форме - должны имеь белый фон - поскольку как сказано в MSDN - эта установка влияет на все создаваемые контролы(окна) данного класса
Форма ответа