Форум: "WinAPI";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];
Внизсмена цвета фона приложения Найти похожие ветки
← →
Sod (2004-10-19 08:42) [0]смена цвета заднего фона - окно делается
RegisterClass (...hbrBackground HBRUSH
указываю цвет кисти = работает (цвет синий),
в процессе работы хочется изменить фон
окна на белый,но как? перегрузив класс?
Отрисовки не помогают,т.к делается вывод TextOut
(фон надписи-белый,шрифт-черный)и из-за того,
что фон окна синий-выглядит неочень,вот надо белый,
чтоб сливался.
На VCL выглядило бы так=
Form1.Color:=clBlue;
потом через время
l.visible:=true;
l.font.color:=clBlack;
Form1.Color:=clWhite;
Куда копать?
← →
Digitman © (2004-10-19 12:18) [1]
> смена цвета фона приложения
у "приложения" нет ни фона ни тем более "цвета фона"
эти атрибуты есть у окон, которые процесс приложения может вообще не создавать, а можт и создать более чем одно
> Куда копать?
копать в сторону трассировки кода и изучения алгоритма метода, вызываемого при установке св-ва TCustomForm.Color
← →
Игорь Шевченко © (2004-10-19 14:52) [2]
> хочется изменить фон
> окна на белый,но как? перегрузив класс?
WM_ERASEBKGND ?
← →
Nick Denry © (2004-10-19 15:30) [3]2Игорь Шевченко © (19.10.04 14:52) [2]
Можно еще :
GetClientRect + WM_PAINT + FillRect:
2Sod (19.10.04 08:42)
А вообще вариантов куча :)
← →
Игорь Шевченко © (2004-10-19 16:08) [4]Nick Denry © (19.10.04 15:30) [3]
> Можно еще :
> GetClientRect + WM_PAINT + FillRect:
А теперь сам подумай, что будет.
← →
XProger © (2004-10-19 16:39) [5]
var
Brush : HBRUSH;
Font : HFONT;
logfont : TLOGFONT;
logbrush : TLOGBRUSH;
BColor : COLORREF;
FColor : COLORREF;
...
WM_CREATE :
begin
// Инициализация цветов фона и шрифта
BColor := Windows.RGB(0, 0, 181);
FColor := Windows.RGB(255, 255, 0);
logbrush.lbStyle := BS_SOLID;
logbrush.lbHatch := 0;
logbrush.lbColor := BColor;
Brush := CreateBrushIndirect(logbrush);
logfont.lfEscapement := 0;
logfont.lfHeight := -11;
logfont.lfFaceName := "Courier New";
Font := CreateFontIndirect(logfont);
end;
WM_CTLCOLORSTATIC:
begin
SelectObject(wParam, Font);
SetBkColor(wParam, BColor);
SetTextColor(wParam, FColor);
Result := Brush;
Exit;
end;
← →
Sod (2004-10-23 00:08) [6]спасибо за помощь! Вы хорошие ребята!
← →
Nick Denry © (2004-10-23 00:15) [7]2Игорь Шевченко © (19.10.04 16:08) [4]
ТОрмоза? :)
← →
Игорь Шевченко © (2004-10-23 00:47) [8]Nick Denry © (23.10.04 00:15) [7]
Нет, не тормоза. Вот если бы последовательность была: Обработчик_WM_PAINT + GetClientRect + FillRect + остальное рисование, тогда бы было так задумано, но были бы тормоза. Лучше GetClientRect + FillRect перенести в обработчик WM_ERASEBKGND, так как он вызывается из системного обработчика WM_PAINT только по необходимости нарисовать фон.
А в той последовательности, что ты предложил, окно будет содержать только фон, на мой взгляд.
← →
Nick Denry © (2004-10-23 13:51) [9]Игорь Шевченко © (23.10.04 00:47) [8]
Так WM_ERASEBKGND похоже вызывается когда Rect полученный GetClientRect равняется PAINTSRTRUCT.rcPaint? Или как он определит, что перерисовать меобходимо весь фон?
Я, кстати (может к моему позору?), делал как раз Обработчик_WM_PAINT + GetClientRect + FillRect + остальное рисование
← →
Игорь Шевченко © (2004-10-24 13:47) [10]Nick Denry © (23.10.04 13:51) [9]
> Так WM_ERASEBKGND похоже вызывается когда Rect полученный
> GetClientRect равняется PAINTSRTRUCT.rcPaint?
Нет конечно. Зависит от стиля класса (CS_HREDRAW, CS_VREDRAW), зависит от того, был ли нарисован фон на обновляемом участке окна, и т.п.
Мой совет, найди книжку Фэня Юаня, программирование графики для Windows, у меня есть очень хороший пример, показывающий, какие области окна участвуют в рисовании при сообщении WM_PAINT. Если не найдешь - пиши в мыло.
← →
Nick Denry © (2004-10-24 14:11) [11]Игорь Шевченко © (24.10.04 13:47) [10]
Мой совет, найди книжку Фэня Юаня <skip>
Если не найдешь - пиши в мыло.
Хорошо.
<offtopic>
Кстати, найдешь время обновленную версию моей книжки посмотреть?
Там порядком переделано, добавлено кой-чего...
</offtopic>
← →
Nick Denry © (2004-10-24 14:11) [12]Удалено модератором
Примечание: Дубль
← →
Игорь Шевченко © (2004-10-24 17:19) [13]Nick Denry © (24.10.04 14:11) [11]
<offtopic>
Адрес почтовый знаешь - пиши.
</offtopic>
← →
Nick Denry © (2004-10-24 22:04) [14]2Игорь Шевченко © (24.10.04 17:19) [13]
<offtopic>
Адрес почтовый знаешь - пиши.
</offtopic>
Хорошо.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.045 c