Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
6-1096488789
qwAnt
2004-09-30 00:13
2004.12.05
Фаервол


4-1098443115
Rusty
2004-10-22 15:05
2004.12.05
Как отловить потерю фокуса компонентом?


8-1094317882
hamster
2004-09-04 21:11
2004.12.05
*.ogg


1-1100795595
dolphin
2004-11-18 19:33
2004.12.05
Файловые переменные


14-1100501304
Думкин
2004-11-15 09:48
2004.12.05
Сбылись мечты Блекмена и его команды со знаменем и горном





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский