Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.05;
Скачать: CL | DM;

Вниз

смена цвета фона приложения   Найти похожие ветки 

 
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 вся ветка

Текущий архив: 2004.12.05;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.046 c
4-1098041253
Jetus
2004-10-17 23:27
2004.12.05
Как правильно сохранить иконку?


3-1099647796
alsov1
2004-11-05 12:43
2004.12.05
Помогите запихнуть иерархию в TTreeView


1-1100683669
OlegM
2004-11-17 12:27
2004.12.05
Как после вставки таблиыцы в ворде выйти из таблицы


4-1098203270
Grundic
2004-10-19 20:27
2004.12.05
!ПОЛНЫЙ! путь к .EXE через PID или его HANDLE - как?


14-1100511354
помаранчевий Жук
2004-11-15 12:35
2004.12.05
Андрей Шевченко забил 100-й мяч в Серии А!