1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
var // mes variables globales
ShowPageHandle: hWnd; // handle de la page créée
ShowCanvasHandle: HDC; // DC du canvas du picture sur la page créé
function Test(const funct: integer): integer; stdcall; export;
var
FDialog: TForm;
Image: TImage;
hnd: hWnd;
begin
hnd := FindWindow(nil,'TestWindow'); // je cherche si ma fenêtre existe
if hnd=0 then begin // si non: cas normal: je la crée
FDialog := TForm.Create(nil); // création de la fenêtre
ShowPageHandle := FDialog.Handle; // mémoriser son handle
FDialog.Caption := 'TestWindow'; // installer son titre
Image := TImage.Create(FDialog); // créer une image
Image.Parent := FDialog; // la placer sur ma fenêtre
Image.Height := printer.PageHeight/4; // forcer les dimensions
Image.Width := printer.PageWidth/4;
ShowCanvasHandle := Image.Canvas.Handle; // mémoriser de DC de l'image
// les fonctions suivantes marchent parfaitement:
Image.Canvas.Font.Name := 'Arial';
Image.Canvas.Font.Size := 12;
Image.Canvas.Pen.Color := clBlack;
Image.Canvas.TextOut(0,0,format('Page %d',[PageNumber]));
Image.Canvas.Rectangle(100,100,900,900);
// les fonctions suivantes NE MARCHENT PAS:
SetBkMode(ShowCanvasHandle, TRANSPARENT);
TextOut(ShowCanvasHandle,50,50,'Ligne 2',7);
// les fonctions suivantes marchent parfaitement:
TextOut(image.Canvas.Handle,75,75,'Ligne 3',7);
Image.Canvas.TextOut(50,100,'Ligne 4');
FDialog.Update;
FDialog.Show;
end else begin
showmessage('La fenêtre est déjà ouverte !');
end;
end; |
Partager