Delphi - база знаний

Как отловить CLX форму?


Как отловить CLX форму?






  Capturing a CLX form is easy, once you know. 
  It took me a little time to find out, so I'm giving the knowledge to help others : 


type 


  TFormCapturable = class(TForm) 
  public 
    procedure PrintOne; 
  end

var 
  FormCapturable: TFormCapturable; 

implementation 

uses 
  Qt; 

procedure TFormCapturable.PrintOne; 
var 
  aBitmap : TBitmap; 
  aWinHandle : QWidgetH; 
  aWinId : Cardinal; 
  x, y, w, h : integer; 
begin 
  // create a new bitmap to hold the captured screen 
  aBitMap := TBitmap.Create; 
  try 
    // get a handle on the desktop 
    aWinHandle := QApplication_desktop; 
    // get the Id from the desktop handle 
    aWinId := QWidget_winId( aWinHandle); 
    // get the position and size of the windows 
    x := Self.Left; 
    y := Self.Top; 
    w := Self.Width; 
    h := Self.Height; 
    // capture the window into the bitmap's pixmap 
    QPixmap_grabWindow( aBitmap.Handle, aWinId, x, y, w, h); 
    // save the bitmap 
    aBitMap.SaveToFile( 'c:\temp\test.bmp'); 
  finally 
    // don't forget to kill the bitmap after use. 
    FreeAndNil( aBitMap); 
  end
end

Взято с сайта



Содержание раздела