Изменение цвета фона

В моей программе Win32, написанной на C++, я определил группу дочерних окон для отображения некоторого текста, таким образом:

hnd_to_this_ch_window = CreateWindow( 
                        L"EDIT",L"Some initial text", WS_VISIBLE | WS_CHILD | ES_LEFT,  
                        position_of_this_window_X,              
                        position_of_this_window_Y,
                        TEXTOUT_DEFAULT_WIDTH,          
                        TEXTOUT_DEFAULT_HEIGHT, 
                        handle_to_my_parent_window, NULL,                        
                        hinstance_variable_used_by_create_window, 
                        NULL )

Мне нужно иметь возможность изменить цвет их фона на красный с помощью одного вызова, а затем обратно на белый (или, возможно, другой цвет) с помощью другого вызова. Кажется, я не могу найти ответов на вопрос, как это сделать с помощью одного вызова функции (аналогично тому, как я просто использую SetWindowText() для изменения значений, отображаемых внутри этих дочерних окон.


person a1s2d3f4    schedule 30.07.2015    source источник
comment
Я думаю, что это может помочь вам найти решение вашей проблемы. stackoverflow.com/a/10063734/5162587   -  person E-rap    schedule 30.07.2015
comment
@E-rap E-rap Если я не ошибаюсь, этот пример, похоже, касается установки цвета фона окна при регистрации класса окна. Это не объясняет, как это сделать во время выполнения.   -  person a1s2d3f4    schedule 31.07.2015


Ответы (1)


Элемент управления редактирования отправляет сообщение WM_CTLCOLOR своему родительскому окну, когда оно собирается быть закрашенным. Вы управляете цветом текста и фона, обрабатывая это сообщение. Таким образом, вы не можете управлять цветами с помощью одного вызова API, вы должны установить переменные, чтобы запомнить нужные цвета, затем изменить или сделать недействительным элемент управления редактированием, чтобы заставить его перерисовываться, а затем использовать эти переменные в WM_CTLCOLOR.

person ScottMcP-MVP    schedule 30.07.2015
comment
Не могли бы вы дать мне очень простой пример кода, чтобы я мог заполнить детали самостоятельно? Я предполагаю, что все начинается с какого-то вызова функции. Что бы это могло быть? - person a1s2d3f4; 31.07.2015