Я использую BCB6, но он должен быть таким же, как Delphi, если я просто добавлю такой обработчик в свою форму:
void __fastcall TForm1::WndProc(TMessage &Message)
И обработаю WM_PAINT, я не получу преимуществаDoubleBuffered, который обеспечивает TWinControl.Есть ли способ сделать какую-либо пользовательскую рисование в форме, которая учитывает настройку DoubleBuffered (она также записывает в битовую карту памяти, которую создает TWinControl)?
Эта функция в controls.pas применяется к DoubleBuffered:
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
Создает растровое изображение памяти, а затем снова вызывает себя.Поэтому мне нужен способ вызова этой функции, когда Message.DC равен 0, поэтому он создаст растровое изображение, а затем я не буду вызывать его снова после этого ... но WMPaint не является виртуальным, как и PaintHandler, поэтому яЯ не вижу способа подключиться к этому.
Я знаю, что могу создать свою собственную двойную буферизацию, но я бы предпочел использовать то, что уже есть, если это возможно.Я планирую перенести этот дизайн и на другие элементы управления, а не только на мою форму.