Salut à tous,

Je développe une DLL en Dlephi 6, et je rencontre un problème avec l'API OutText.

Voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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.

Qu'est-ce que j'ai mal compris ? Merci de votre aide !