Запретить отрисовку фона для TCustomControl
От: Vladik Россия  
Дата: 08.05.02 12:23
Оценка:
Привет!

Создаю свой контрол, все содержимое рисую сам. Соответственно, перерисовка фона нафиг не нужна (ибо моргает только). Старый добрый "апишный" прием с ловлей WM_ERASEBKGND никакого эффекта не дал (или я как-то не так это делаю) — видимо, в недрах VCL фон перерисовывется другим путем. Чего можно сделать?
Как все запущенно...
Re: Запретить отрисовку фона для TCustomControl
От: zaiats_2k Россия  
Дата: 09.05.02 06:46
Оценка:
Здравствуйте Vladik, Вы писали:

V>Привет!


V>Создаю свой контрол, все содержимое рисую сам. Соответственно, перерисовка фона нафиг не нужна (ибо моргает только). Старый добрый "апишный" прием с ловлей WM_ERASEBKGND никакого эффекта не дал (или я как-то не так это делаю) — видимо, в недрах VCL фон перерисовывется другим путем. Чего можно сделать?


Brush.Style:= bsClear; // поможет отцу русской демократии.



(сам не проверял, но хелп уверяет что:
Tip: Set the Style property to bsClear to eliminate flicker when the object repaints.)
0 программистов ругал сердитый шеф,
потом уволил одного, и стало их FF!
Re[2]: Запретить отрисовку фона для TCustomControl
От: Vladik Россия  
Дата: 13.05.02 07:17
Оценка:
Здравствуйте zaiats_2k, Вы писали:

Z2>
Z2>Brush.Style:= bsClear; // поможет отцу русской демократии.

Z2>

Не поможет. Все равно идет явная перерисовка фона. Да и где этот код вставлять, если я сам использую кисть для рисования? В конце обработчика Paint?
Как все запущенно...
Re[3]: Запретить отрисовку фона для TCustomControl
От: Аноним  
Дата: 28.04.05 13:36
Оценка:
Здравствуйте, Vladik, Вы писали:

V>Здравствуйте zaiats_2k, Вы писали:


Z2>>
Z2>>Brush.Style:= bsClear; // поможет отцу русской демократии.

Z2>>

V>Не поможет. Все равно идет явная перерисовка фона. Да и где этот код вставлять, если я сам использую кисть для рисования? В конце обработчика Paint?


Та же проблема. Кто-нибудь знает решение? Поделитесь плиз.
Re: Запретить отрисовку фона для TCustomControl
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 28.04.05 13:47
Оценка:
Здравствуйте, Vladik, Вы писали:

V>Привет!


V>Создаю свой контрол, все содержимое рисую сам. Соответственно, перерисовка фона нафиг не нужна (ибо моргает только). Старый добрый "апишный" прием с ловлей WM_ERASEBKGND никакого эффекта не дал (или я как-то не так это делаю) — видимо, в недрах VCL фон перерисовывется другим путем. Чего можно сделать?


Давайте-ка посмотрим на код объявления и обработчика WM_ERASEBKGND
Re[2]: Запретить отрисовку фона для TCustomControl
От: Danchik Украина  
Дата: 28.04.05 14:16
Оценка:
Здравствуйте, Flamer, Вы писали:

F>Здравствуйте, Vladik, Вы писали:


V>>Привет!


V>>Создаю свой контрол, все содержимое рисую сам. Соответственно, перерисовка фона нафиг не нужна (ибо моргает только). Старый добрый "апишный" прием с ловлей WM_ERASEBKGND никакого эффекта не дал (или я как-то не так это делаю) — видимо, в недрах VCL фон перерисовывется другим путем. Чего можно сделать?


F>Давайте-ка посмотрим на код объявления и обработчика WM_ERASEBKGND


Это точно без кода решать проблему...
Вот работающий код:

type
  TMyControl = class (TWinControl)
  private
    procedure WMEraseBkgnd(var Message: TWmEraseBkgnd); message WM_ERASEBKGND;
  end;

...

procedure TMyControl.WMEraseBkgnd(var Message: TWMEraseBkgnd);
begin
  Message.Result := 1;
end;
Re[3]: Запретить отрисовку фона для TCustomControl
От: ak_miass Россия  
Дата: 29.04.05 03:23
Оценка:
Здравствуйте, Danchik, Вы писали:

D>
D>procedure TMyControl.WMEraseBkgnd(var Message: TWMEraseBkgnd);
D>begin
D>  Message.Result := 1;
D>end;
D>


Здесь наверное ещё нужно позаботиться о том, чтобы не вызывалась процедура родительского класса.
В Билдере я перекрываю WndProc, и там если надо вызываю её явно, если не надо — не вызываю. В Delphi наверное тоже так можно сделать?
Re[4]: Запретить отрисовку фона для TCustomControl
От: Sinclair Россия https://github.com/evilguest/
Дата: 29.04.05 04:24
Оценка:
Здравствуйте, ak_miass, Вы писали:
_>Здесь наверное ещё нужно позаботиться о том, чтобы не вызывалась процедура родительского класса.
обо всем уже позаботились.
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.