Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Как отловить CLX форму?


Автор: Pakshin A. S. 6.11.2004, 18:46
Код

{  
  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;  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)