Bonjour à toutes et à tous,

Dans un programme que j'ai écrit et qui fonctionnait bien en 32 bits, le transfert de message ne fonctionne plus en 64 bits. Voici le passage concerné :

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
        begin
          with CoordZoom^ do
          begin
            if Pt0.X > Pt1.X then
            begin
              Left:= Pt1.X; Right:= Pt0.X;
            end
            else
            begin
              Left:= Pt0.X; Right:= Pt1.X;
            end;
            if Pt0.Y > Pt1.Y then
            begin
              Top:= Pt1.Y; Bottom:= Pt0.Y;
            end
            else
            begin
              Top:= Pt0.Y; Bottom:= Pt1.Y;
            end;
          end;
          PostMessage(Parent.Handle, cp_ZoomDemande, 0, LongInt(CoordZoom));
        end;
avec :

Quand j'en arrive à la ligne "PostMessage", aussi bien en 32 bits qu'en 64 bits, lorsque je pointe la souris sur "CoordZoom", un affichage me décrit son contenu de la même manière en donnant les valeur Left, Top, Right, Bottom de CoordZoom. C'est OK.

Voici le passage traitant le message :

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
procedure TCadreAff.Zoomer(var message: TMsgZoom);
var
  i: Integer;
begin
  with message do
  begin
    Zooming.Down:= False;
    Zooming.Enabled:= False;
    for i:= 1 to NbEcransAff do
      EcranActif[i].ZoomPermis:= False;
    with Coord^ do
    begin
      if (Right-Left > 4) and (Bottom-Top > 4) then
        AffZoom(Left, Top, Right, Bottom);
    end;
  end;
end;
Avec :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
  TMsgZoom = record    {Type de message pour passer les coordonnées de zooming}
    Msg: Cardinal;
    Prm: Word;
    Coord: ^TRect;
  end;
En 32 bits, lorsque j'arrive à la ligne "with Coord^ do", et que je pointe la souris sur "Coord", en 32 bits, je retrouve le valeurs postées alors qu'en 64 bits, j'obtiens :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
message.Coord = <TRECT> = nil
Je n'arrive pas à trouver ce qu'il faut faire pour corriger ce problème.

Merci de votre aide.

Cordialement.

Pierre.