rain
Здравствуйте! Обращаюсь к Вам, потому что уже сам все, что можно перепробовал. У меня такая проблема: нужно изменить цвет фона окна на, скажем, светло-серый. Для этого, насколько я знаю, нужно изменить цвет кисти окна. Но как это сделать и где, я не знаю. Пробовал обращаться к функции SetWindowLong() - это помогло, но меня интересует, как этого можно добиться средствами самой библиотеки. Заранее спасибо.
Либо при регистрации класса окна, в член hbrBackground, структуры WNDCLASS(EX), загони хендл на желаемый brush.
создай кисть и укажи её в WNDCLASS, в поле hbrBackground:
//Код
LOGBRUSH MyBrush;
HBRUSH hBrush;
WNDCLASS WndClass;
MyBrush.lbStyle=BS_SOLID; //Сплошная кисть
MyBrush.lbColor=RGB(255, 0, 255); //Фиолетовый цвет
hBrush=CreateBrushIndirect(&MyBrush);//Создаём кисть
WndClass.hbrBackround=hBrush;
//Потом заполняй остальные поля WNDCLASS и создавай окно!
###################################
Способ 2 динамический.
Ловишь WM_PAINT, создаёшь кисть (CreateBrushIndirect(...)), затем получаешь контекст устройства (Device Context) и заливаешь его нужным цветом:
//Код
HDC hDC;//Конекст окна
RECT Rect;//Прямоуг-ник окна
...
//Обработчик WM_PAINT
case WM_PAINT:
MyBrush.lbColor=RGB(0xFF, 0xFF, 0);//Жёлтый
hBrush=CreateBrushIndirect(&MyBrush);
hDC=GetDC(hWnd);//Получаем контекст устройства
GetClientRect(&Rect);//Получам прямоуг-ник окна
FillRect(hDC, &Rect, hBrush);//Заливаем окно
break;
Вот всё!