Ok, maybe I´m missing something here. Take a look at this code:

procedure TGDICanvas.DoFillTriangle(const P1, P2, P3: TPoint);
var
 pts : array[1..3] of windows.TPoint;
 pt: TPoint;
begin
 pt := Transform(P1);
 pts[1].X := pt.X;   pts[1].Y := pt.Y;
 pt := Transform(P2);
 pts[2].X := pt.X;   pts[2].Y := pt.Y;
 pt := Transform(P3);
 pts[3].X := pt.X;   pts[3].Y := pt.Y;

 NeedBrush;
 Windows.Polygon(Handle, pts[1], 3);
end;

Under Win32 it compiles OK, but cross-compiling for wince I get this:

C:\Programas\fpGUI\trunk\gfx\gdi\GFX_GDI.pas(629,33) Error:
Incompatible type for arg no. 2: Got "POINT", expected "LPPOINT"

On the line that calls Windows.Polygon

But I went to rtl/wince/wininc/redef.inc I the only occurence of
Polygon I find is this one:

function Polygon(DC: HDC; var Points; Count: Integer): BOOL; external
'gdi32' name 'Polygon';

Isn´t that wrong?? I thougth wince didn´t have a gdi32 library, but it
was called something else. Plus, the declaration has a var parameter,
so I shouldn´t need the @

Next, I get even more confused because of this code:

procedure TGDIApplication.Run;
var
 Msg: TMsg;
begin
 DoBreakRun := False;

 while Windows.GetMessage(@Msg, 0, 0, 0) and
  (not (QuitWhenLastWindowCloses and (Forms.Count = 0))) and
  (DoBreakRun = False) do
 begin
   Windows.TranslateMessage(@msg);
   Windows.DispatchMessage(@msg);
 end;

 DoBreakRun := False;
end;

It compiles and works on both win32 and wince, but Windows.GetMessage
is declared like this:

function GetMessage(var lpMsg: TMsg; hWnd: HWND; wMsgFilterMin,
wMsgFilterMax: UINT): BOOL;external 'user32' name 'GetMessageA';

Do I have a wrong idea of the sintax of var parameters??? I never knew
it would accept both with @ and without and produce the same code...

by the way, I am using mode delphi
--
Felipe Monteiro de Carvalho
_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to