Создаю свой контрол, все содержимое рисую сам. Соответственно, перерисовка фона нафиг не нужна (ибо моргает только). Старый добрый "апишный" прием с ловлей WM_ERASEBKGND никакого эффекта не дал (или я как-то не так это делаю) — видимо, в недрах VCL фон перерисовывется другим путем. Чего можно сделать?
Здравствуйте 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
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?
Та же проблема. Кто-нибудь знает решение? Поделитесь плиз.
Здравствуйте, Vladik, Вы писали:
V>Привет!
V>Создаю свой контрол, все содержимое рисую сам. Соответственно, перерисовка фона нафиг не нужна (ибо моргает только). Старый добрый "апишный" прием с ловлей WM_ERASEBKGND никакого эффекта не дал (или я как-то не так это делаю) — видимо, в недрах VCL фон перерисовывется другим путем. Чего можно сделать?
Давайте-ка посмотрим на код объявления и обработчика WM_ERASEBKGND
Re[2]: Запретить отрисовку фона для TCustomControl
Здравствуйте, 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
Здесь наверное ещё нужно позаботиться о том, чтобы не вызывалась процедура родительского класса.
В Билдере я перекрываю WndProc, и там если надо вызываю её явно, если не надо — не вызываю. В Delphi наверное тоже так можно сделать?
Re[4]: Запретить отрисовку фона для TCustomControl
Здравствуйте, ak_miass, Вы писали: _>Здесь наверное ещё нужно позаботиться о том, чтобы не вызывалась процедура родительского класса.
обо всем уже позаботились.
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.