Главная страница
    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.037 c
6-1096396967
Наташа
2004-09-28 22:42
2004.12.05
Какой самый быстрый способ скачивания файлов?


14-1100607348
ИМХО
2004-11-16 15:15
2004.12.05
Чудесное исцеление


1-1100698733
Алексей
2004-11-17 16:38
2004.12.05
Перерисовка TTreeNode


1-1101281831
Tria
2004-11-24 10:37
2004.12.05
Проблема с mdi окнами.


6-1096607506
Девушка
2004-10-01 09:11
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский