Вопрос № 70234: Здравствуйте! Пишу программу на C++, в которой используется несколько элементов управления (дочерних окон) класса "edit" с установленным стилем ES_READONLY. При этом цвет фона в таких окнах автоматически становится серым, а мне нужно остави...
Вопрос № 70.234
Здравствуйте! Пишу программу на C++, в которой используется несколько элементов управления (дочерних окон) класса "edit" с установленным стилем ES_READONLY. При этом цвет фона в таких окнах автоматически становится серым, а мне нужно оставить обычный белый (т.е., если не ошибаюсь, COLOR_WINDOW).
Очень смутно представляю себе, что нужно или обрабатывать сообщения WM_CTLCOLORSTATIC, или можно создать свой класс элемента из стандартного (при помощи GetClassInfo и RegisterClass) указав в новом классе нужный цвет. Но как реализовать какой-либо из этих или другой варианты, пока не очень пойму, - только-только учусь.
Пожалуйста, дайте пример кода, сопроводив его, по возможности, комментариями.
Спасибо.
P.S. Я не использую MFC, нужен чистый WinAPI.
Отправлен: 10.01.2007, 03:38
Вопрос задал: Fole (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Tek
Здравствуйте, Fole!
Полагаю проще использовать следующую API функцию для готового edit'а - SetClassLong(hWnd, GCL_HBRBACKGROUND, (HBRUSH)COLOR_WINDOW+1)
Правда это оправдано только в том случае, если все ваши edit'ы на форме - должны имеь белый фон - поскольку как сказано в MSDN - эта установка влияет на все создаваемые контролы(окна) данного класса
--------- WinApi - жутко неудобные костыли, MFC и VCL - немногим полезнее, но ничего лучше еще не создано (C)Почти Уинстон Черчилль :)
Ответ отправил: Tek (статус: 5-ый класс)
Ответ отправлен: 10.01.2007, 09:37