Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.14;
Скачать: CL | DM;

Вниз

Как узнать использует ли приложение DoubleBuffered   Найти похожие ветки 

 
DelphiLexx ©   (2006-08-29 09:40) [0]

Есть чужое приложение которое умеет рисовать схемы. Как узнать использует ли данное приложение DoubleBuffered = true.
Да и вообще постараться вытянуть как можно больше инфы о методах рисования используемых этим приложением.


 
Rouse_ ©   (2006-08-29 10:35) [1]

Приложение пишут не только на Delphi. В том же VB | VC++ нет понятия DoubleBuffered.


 
DelphiLexx ©   (2006-08-29 10:36) [2]


> Приложение пишут не только на Delphi. В том же VB | VC++
> нет понятия DoubleBuffered.

Тогда назови мне аналог DoubleBuffered на С++


 
Дятел   (2006-08-29 10:58) [3]

Щас фсё бросим, побежим аналоги называть. Сказано ж: нету такого понятия!


 
Rouse_ ©   (2006-08-29 11:07) [4]


> Тогда назови мне аналог DoubleBuffered на С++

Аналог? Да не вопрос: Большая функция написанная грамотным программистом.


 
DelphiLexx ©   (2006-08-29 11:23) [5]


> Аналог? Да не вопрос: Большая функция написанная грамотным
> программистом.

Правильно ли я понял:
Во избежания мерцания программисты Си вместо одной строчки программистов Delphi DoubleBuffered := true пишут самостоятельно большую процедуру.


 
Lamer@fools.ua ©   (2006-08-29 11:26) [6]

>Во избежания мерцания программисты Си вместо одной строчки программистов Delphi DoubleBuffered := true пишут самостоятельно большую процедуру.

... которую для программистов Delphi уже написали добрые дяди из Борланда.


 
DelphiLexx ©   (2006-08-29 11:36) [7]


> пишут самостоятельно большую процедуру.

Зоопарк


 
Rouse_ ©   (2006-08-29 11:49) [8]

Вот смотри как работает DoubleBuffered (обрати внимание на флаг FDoubleBuffered):

procedure TWinControl.WMPaint(var Message: TWMPaint);
var
 DC, MemDC: HDC;
 MemBitmap, OldBitmap: HBITMAP;
 PS: TPaintStruct;
begin
 if not FDoubleBuffered or (Message.DC <> 0) then
 begin
   if not (csCustomPaint in ControlState) and (ControlCount = 0) then
     inherited
   else
     PaintHandler(Message);
 end
 else
 begin
   DC := GetDC(0);
   MemBitmap := CreateCompatibleBitmap(DC, ClientRect.Right, ClientRect.Bottom);
   ReleaseDC(0, DC);
   MemDC := CreateCompatibleDC(0);
   OldBitmap := SelectObject(MemDC, MemBitmap);
   try
     DC := BeginPaint(Handle, PS);
     Perform(WM_ERASEBKGND, MemDC, MemDC);
     Message.DC := MemDC;
     WMPaint(Message);
     Message.DC := 0;
     BitBlt(DC, 0, 0, ClientRect.Right, ClientRect.Bottom, MemDC, 0, 0, SRCCOPY);
     EndPaint(Handle, PS);
   finally
     SelectObject(MemDC, OldBitmap);
     DeleteDC(MemDC);
     DeleteObject(MemBitmap);
   end;
 end;
end;

procedure TWinControl.WMEraseBkgnd(var Message: TWMEraseBkgnd);
begin
 with ThemeServices do
 if ThemesEnabled and Assigned(Parent) and (csParentBackground in FControlStyle) then
   begin
     { Get the parent to draw its background into the control"s background. }
     if Parent.DoubleBuffered then
       PerformEraseBackground(Self, Message.DC)
     else
       DrawParentBackground(Handle, Message.DC, nil, False);
   end
   else
   begin
     { Only erase background if we"re not doublebuffering or painting to memory. }
     if not FDoubleBuffered or
        (TMessage(Message).wParam = TMessage(Message).lParam) then
       FillRect(Message.DC, ClientRect, FBrush.Handle);
   end;

 Message.Result := 1;
end;



Страницы: 1 вся ветка

Текущий архив: 2007.01.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.085 c
15-1167016780
Австралия
2006-12-25 06:19
2007.01.14
Что на заставке Google делают кенгуру ?


9-1141658314
i)lya
2006-03-06 18:18
2007.01.14
HELP


8-1148156126
lockheed_man
2006-05-21 00:15
2007.01.14
Image со ScrollBar ами


15-1166634448
Pit_q
2006-12-20 20:07
2007.01.14
Настольый теннис


3-1161776236
Megabyte
2006-10-25 15:37
2007.01.14
Не активизируется кнопка Post у DBNavigator при удалении