Salut à tous,
Je développe une DLL en Dlephi 6, et je rencontre un problème avec l'API OutText.
Voici mon code:
Il s'agit d'un extrait de ma DLL qui contient beaucoupt de fonctions déjà opérationnelles. Mais je n'arrive pas à comprendre pourquoi l'API OutText ne marche pas sur mon DC chargé par Image.Canvas.Handle, alors que la fonction Image.Canvas.OutText marche parfaitement.Code:
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;
Qu'est-ce que j'ai mal compris ? Merci de votre aide !

