On Sun, 23 Apr 2006 01:37:01 +0330
"roozbeh gholizadeh" <[EMAIL PROTECTED]> wrote:

> Here is another patch.
> makes labels,brushes work.

There are line breaks.
Please resend the patch as attachment or zip.

Mattias


> 
> 
> Index: wincecallback.inc
> ===================================================================
> --- wincecallback.inc (revision 9161)
> +++ wincecallback.inc (working copy)
> @@ -863,15 +863,15 @@
>       End;
>       WM_CLOSE:
>       Begin
> -//      if (Window = TWinCEWidgetSet(WidgetSet).AppHandle) and
> -//        (Application.MainForm <> nil) then
> +      if (Window = TWinCEWidgetSet(WidgetSet).AppHandle) and
> +        (Application.MainForm <> nil) then
>         begin
>           Windows.SendMessage(Application.MainForm.Handle, WM_CLOSE, 0,
>           0);
> -        Application.Terminate;
> +       // Application.Terminate;
> +      end
> +      else begin
> +        LMessage.Msg := LM_CLOSEQUERY;
>         end;
> -//      else begin
> -//        LMessage.Msg := LM_CLOSEQUERY;
> -//      end;
>         // default is to destroy window, inhibit
>         WinProcess := false;
>       End;
> Index: winceobject.inc
> ===================================================================
> --- winceobject.inc   (revision 9161)
> +++ winceobject.inc   (working copy)
> @@ -48,6 +48,9 @@
>   end;
> 
>   procedure TWinCEWidgetSet.AppInit(var ScreenInfo: TScreenInfo);
> +var
> +  Handle: HWND;
> +  DC: HDC;
>   begin
>     {$ifdef VerboseWinCE}
>     WriteLn('TWinCEWidgetSet.AppInit');
> @@ -84,13 +87,27 @@
>     FStockWhiteBrush := CreateBrushIndirect(LogBrush);
>   }
> 
> +  // Create parent of all windows, `button on taskbar'
> +//does this work on wince?!
> +  FAppHandle := CreateWindow(@ClsName,  
> CreatePWideCharFromString(Application.Title), WS_POPUP or
> +    WS_CLIPSIBLINGS or WS_CAPTION or WS_SYSMENU or WS_MINIMIZEBOX,
> +    0, {Windows.GetSystemMetrics(SM_CXSCREEN) div 2,}
> +    0, {Windows.GetSystemMetrics(SM_CYSCREEN) div 2,}
> +    0, 0, HWND(nil), HMENU(nil), HInstance, nil);
> +  AllocWindowInfo(FAppHandle);
> +
> +  // set nice main icon
> +  SendMessage(FAppHandle, WM_SETICON, ICON_BIG,
> +    Windows.LoadIcon(MainInstance, 'MAINICON'));
> +  // remove useless menuitems from sysmenu
> +
>    // initialize ScreenInfo
> -{  Handle := GetDesktopWindow;
> +  Handle := GetDesktopWindow;
>     DC := Windows.GetDC(Handle);
>     ScreenInfo.PixelsPerInchX := GetDeviceCaps(DC, LOGPIXELSX);
>     ScreenInfo.PixelsPerInchY := GetDeviceCaps(DC, LOGPIXELSY);
>     ScreenInfo.ColorDepth := GetDeviceCaps(DC, BITSPIXEL);
> -  ReleaseDC(Handle, DC);}
> +  ReleaseDC(Handle, DC);
> 
>   end;
> 
> Index: winceproc.pp
> ===================================================================
> --- winceproc.pp      (revision 9161)
> +++ winceproc.pp      (working copy)
> @@ -45,6 +45,10 @@
>   function DisposeWindowInfo(Window: HWND): boolean;
>   function GetWindowInfo(Window: HWND): PWindowInfo;
> 
> +//roozbeh:these are simply copy-pasted from win32...i bet most of them  
> can be changed
> +//or not that much neccessary on wince!
> +function LCLControlSizeNeedsUpdate(Sender: TWinControl;SendSizeMsgOnDiff:
>  
> boolean): boolean;
> +Procedure LCLBoundsToWin32Bounds(Sender: TObject;var Left, Top, Width,  
> Height: Integer);
>   procedure LCLFormSizeToWin32Size(Form: TCustomForm; var AWidth, AHeight:
>    
> Integer);
>   function GetLCLClientBoundsOffset(Sender: TObject; var ORect: TRect):  
> boolean;
>   function GetLCLClientBoundsOffset(Handle: HWnd; var Rect: TRect):
>   boolean;
> @@ -125,6 +129,25 @@
> 
> 
> 
> +function GetLCLClientBoundsOffset(Handle: HWnd; var Rect: TRect):
> boolean; +var
> +  OwnerObject: TObject;
> +begin
> +  OwnerObject := GetWindowInfo(Handle)^.WinControl;
> +  Result:=GetLCLClientBoundsOffset(OwnerObject, Rect);
> +end;
> +
> +Procedure LCLBoundsToWin32Bounds(Sender: TObject;
> +  var Left, Top, Width, Height: Integer);
> +var
> +  ORect: TRect;
> +Begin
> +  if (Sender=nil) or (not (Sender is TWinControl)) then exit;
> +  if not GetLCLClientBoundsOffset(TWinControl(Sender).Parent, ORect) then
>  
> exit;
> +  inc(Left, ORect.Left);
> +  inc(Top, ORect.Top);
> +End;
> +
>   {----------------------------------------------------------------------
>   ---------
>     function GetLCLClientOriginOffset(Sender: TObject;
>       var LeftOffset, TopOffset: integer): boolean;
> @@ -194,13 +217,6 @@
>     Result:=true;
>   end;
> 
> -function GetLCLClientBoundsOffset(Handle: HWnd; var Rect: TRect):
> boolean; -var
> -  OwnerObject: TObject;
> -begin
> -  OwnerObject := GetWindowInfo(Handle)^.WinControl;
> -  Result:=GetLCLClientBoundsOffset(OwnerObject, Rect);
> -end;
> 
>   procedure GetWin32ControlPos(Window, Parent: HWND; var Left, Top:  
> integer);
>   var
> @@ -212,6 +228,45 @@
>     Top := winRect.Top - parRect.Top;
>   end;
> 
> +
> +{-----------------------------------------------------------------------
> -------- +  function LCLBoundsNeedsUpdate(Sender: TWinControl;
> +    SendSizeMsgOnDiff: boolean): boolean;
> +
> +  Returns true if LCL bounds and win32 bounds differ for the control.
> +------------------------------------------------------------------------
> -------} +function LCLControlSizeNeedsUpdate(Sender: TWinControl;
> +  SendSizeMsgOnDiff: boolean): boolean;
> +var
> +  Window:HWND;
> +  LMessage: TLMSize;
> +  IntfWidth, IntfHeight: integer;
> +begin
> +  Result:=false;
> +  Window:= Sender.Handle;
> +  LCLIntf.GetWindowSize(Window, IntfWidth, IntfHeight);
> +  if (Sender.Width = IntfWidth)
> +  and (Sender.Height = IntfHeight)
> +  and (not Sender.ClientRectNeedsInterfaceUpdate) then
> +    exit;
> +  Result:=true;
> +  if SendSizeMsgOnDiff then begin
> +    //writeln('LCLBoundsNeedsUpdate B  
> ',TheWinControl.Name,':',TheWinControl.ClassName,' Sending WM_SIZE');
> +    Sender.InvalidateClientRectCache(true);
> +    // send message directly to LCL, some controls not subclassed ->  
> message
> +    // never reaches LCL
> +    with LMessage do
> +    begin
> +      Msg := LM_SIZE;
> +      SizeType := SIZE_RESTORED or Size_SourceIsInterface;
> +      Width := IntfWidth;
> +      Height := IntfHeight;
> +    end;
> +    DeliverMessage(Sender, LMessage);
> +  end;
> +end;
> +
> +
>   {
>     Updates the window style of the window indicated by Handle.
>     The new style is the Style parameter.
> Index: wincewinapi.inc
> ===================================================================
> --- wincewinapi.inc   (revision 9161)
> +++ wincewinapi.inc   (working copy)
> @@ -221,18 +221,23 @@
>       AlwaysCreateMask);
>   end;}
> 
> -{Function TWinCEWidgetSet.CreateBrushIndirect(Const LogBrush: TLogBrush):
>  
> HBRUSH;
> +Function TWinCEWidgetSet.CreateBrushIndirect(Const LogBrush: TLogBrush): 
> 
> HBRUSH;
>   Var
>     LB: Windows.LogBrush;
>   Begin
>     LB.lbStyle := LogBrush.lbStyle;
>     LB.lbColor := Windows.COLORREF(ColorToRGB(LogBrush.lbColor));
>     LB.lbHatch := LogBrush.lbHatch;
> -  Assert(False, Format('Trace:> [TWin32WidgetSet.CreateBrushIndirect]   
> Style: %d, Color: %8x', [lb.lbStyle, lb.lbColor]));
> -//  Result := Windows.CreateBrushIndirect(LB);
> -  Result := Windows.CreatesBrushIndirect(LB);
> -  Assert(False, Format('Trace:< [TWin32WidgetSet.CreateBrushIndirect] Got
>  
> --> %x', [Result]));
> -End;}
> +  Assert(False, Format('Trace:> [TWinCEWidgetSet.CreateBrushIndirect]   
> Style: %d, Color: %8x', [lb.lbStyle, lb.lbColor]));
> +  Result := 0;
> +  if lb.lbStyle = BS_SOLID then
> +  Result := Windows.CreateSolidBrush(LB.lbColor);
> +  if lb.lbStyle= BS_NULL then
> +  Result := Windows.GetStockObject(NULL_BRUSH);
> +  if lb.lbStyle = BS_DIBPATTERNPT then
> +  Result := CreateDIBPatternBrushPt(pointer(lb.lbHatch), lb.lbColor);
> +  Assert(False, Format('Trace:< [TWinCEWidgetSet.CreateBrushIndirect] Got
>  
> --> %x', [Result]));
> +End;
> 
>   {----------------------------------------------------------------------
>   --------
>     Method:  CreateCaret
> @@ -425,11 +430,7 @@
>     Assert(False, Format('trace:> [TWinCEWidgetSet.DrawText] DC:0x%x,  
> Str:''%s'', Count: %d, Rect = %d,%d,%d,%d, Flags:%d',
>       [DC, Str, Count, Rect.Left, Rect.Top, Rect.Right, Rect.Bottom,  
> Flags]));
>     WideStr := CreatePWideCharFromString(String(str));
> - dc:=getdc(0);
> - SetTextColor(dc,GetSysColor(COLOR_WINDOWTEXT));
> - rect.Left:=10;rect.top:=10;rect.Right:=90;rect.bottom:=90;
> -
> -  Result := Windows.DrawText(DC, 'salam', -1, @Rect, DT_LEFT or DT_TOP or
>  
> DT_WORDBREAK );
> +  Result := Windows.DrawText(DC, WideStr, Count, @Rect, Flags);
>     DisposePWideChar(WideStr);
>     Assert(False, Format('trace:> [TWinCEWidgetSet.DrawText] DC:0x%x,  
> Str:''%s'', Count: %d, Rect = %d,%d,%d,%d, Flags:%d',
>       [DC, Str, Count, Rect.Left, Rect.Top, Rect.Right, Rect.Bottom,  
> Flags]));
> @@ -515,11 +516,11 @@
>     Assert(False, Format('trace:< [TWin32WidgetSet.ExtTextOut] DC:0x%x,  
> X:%d, Y:%d, Options:%d, Str:''%s'', Count: %d', [DC, X, Y, Options, Str,  
> Count]));
>   End;
> 
> -{function TWinCEWidgetSet.ExtSelectClipRGN(dc: hdc; rgn: hrgn; Mode:  
> Longint
> +function TWinCEWidgetSet.ExtSelectClipRGN(dc: hdc; rgn: hrgn; Mode:  
> Longint
>     ): Integer;
>   begin
>     Result:=inherited ExtSelectClipRGN(dc, rgn, Mode);
> -end;}
> +end;
> 
>   {----------------------------------------------------------------------
>   --------
>     Method:  FillRect
> @@ -890,7 +891,7 @@
>   Begin
>     if NIndex = COLOR_FORM then
>       NIndex := COLOR_BTNFACE;
> -  Result := Windows.GetSysColor(nIndex);
> +  Result := Windows.GetSysColor(nIndex or $40000000);
>   End;
> 
>   {----------------------------------------------------------------------
>   --------
> @@ -955,27 +956,27 @@
>   Begin
>     Assert(False, Format('Trace:> TODO  
> FINISH[TWinCEWidgetSet.GetTextMetrics] DC: 0x%x', [DC]));
>     Result := Boolean(Windows.GetTextMetrics(DC, @TMw));
> -    TM.tmHeight:= TMW.tmHeight;
> -    TM.tmAscent:= TMW.tmAscent;
> -    TM.tmDescent:= TMW.tmDescent;
> -    TM.tmInternalLeading:= TMW.tmInternalLeading;
> -    TM.tmExternalLeading:= TMW.tmExternalLeading;
> -    TM.tmAveCharWidth:= TMW.tmAveCharWidth;
> -    TM.tmMaxCharWidth:= TMW.tmMaxCharWidth;
> -    TM.tmWeight:= TMW.tmWeight;
> -    TM.tmOverhang:= TMW.tmOverhang;
> -    TM.tmDigitizedAspectX:= TMW.tmDigitizedAspectX;
> -    TM.tmDigitizedAspectY:= TMW.tmDigitizedAspectY;
> -    TM.tmFirstChar:= TMW.tmFirstChar;
> -    TM.tmLastChar:= TMW.tmLastChar;
> -    TM.tmDefaultChar:= TMW.tmDefaultChar;
> -    TM.tmBreakChar:= TMW.tmBreakChar;
> -    TM.tmItalic:= TMW.tmItalic;
> -    TM.tmUnderlined:= TMW.tmUnderlined;
> -    TM.tmStruckOut:= TMW.tmStruckOut;
> -    TM.tmPitchAndFamily:= TMW.tmPitchAndFamily;
> -    TM.tmCharSet:= TMW.tmCharSet;
> -    Assert(False, Format('Trace:< TODO  
> FINISH[TWinCEWidgetSet.GetTextMetrics] DC: 0x%x', [DC]));
> +  TM.tmHeight:= TMW.tmHeight;
> +  TM.tmAscent:= TMW.tmAscent;
> +  TM.tmDescent:= TMW.tmDescent;
> +  TM.tmInternalLeading:= TMW.tmInternalLeading;
> +  TM.tmExternalLeading:= TMW.tmExternalLeading;
> +  TM.tmAveCharWidth:= TMW.tmAveCharWidth;
> +  TM.tmMaxCharWidth:= TMW.tmMaxCharWidth;
> +  TM.tmWeight:= TMW.tmWeight;
> +  TM.tmOverhang:= TMW.tmOverhang;
> +  TM.tmDigitizedAspectX:= TMW.tmDigitizedAspectX;
> +  TM.tmDigitizedAspectY:= TMW.tmDigitizedAspectY;
> +  TM.tmFirstChar:= TMW.tmFirstChar;
> +  TM.tmLastChar:= TMW.tmLastChar;
> +  TM.tmDefaultChar:= TMW.tmDefaultChar;
> +  TM.tmBreakChar:= TMW.tmBreakChar;
> +  TM.tmItalic:= TMW.tmItalic;
> +  TM.tmUnderlined:= TMW.tmUnderlined;
> +  TM.tmStruckOut:= TMW.tmStruckOut;
> +  TM.tmPitchAndFamily:= TMW.tmPitchAndFamily;
> +  TM.tmCharSet:= TMW.tmCharSet;
> +  Assert(False, Format('Trace:< TODO  
> FINISH[TWinCEWidgetSet.GetTextMetrics] DC: 0x%x', [DC]));
>   End;
> 
>   {----------------------------------------------------------------------
>   --------
> @@ -1228,26 +1229,72 @@
>     );
>   begin
>     inherited LeaveCriticalSection(CritSection);
> -end;
> +end;}
> 
> -function TWinCEWidgetSet.LineTo(DC: HDC; X, Y: Integer): Boolean;
> -begin
> -  Result:=inherited LineTo(DC, X, Y);
> -end;
> +{-----------------------------------------------------------------------
> ------- +  Method:  LineTo
> +  Params:  DC - device context handle
> +           X  - x-coordinate of line's ending point
> +           Y  - y-coordinate of line's ending point
> +  Returns: if the function succeeds
> 
> -function TWinCEWidgetSet.MessageBox(hWnd: HWND; lpText, lpCaption: PChar;
> -  uType: Cardinal): integer;
> -begin
> -  Result:=inherited MessageBox(hWnd, lpText, lpCaption, uType);
> -end;
> +  Draws a line from the current position up to, but not including, the  
> specified point.
> +
> -------------------------------------------------------------------------
> -----} +Function TWinCEWidgetSet.LineTo(DC: HDC; X, Y: Integer): Boolean;
> +Begin
> +  Assert(False, Format('Trace:> [TWinCEWidgetSet.LineTo] DC:0x%x, X:%d,  
> Y:%d', [DC, X, Y]));
> +  Result := Boolean(Windows.LineTo(DC, X, Y));
> +  Assert(False, Format('Trace:< [TWinCEWidgetSet.LineTo] DC:0x%x, X:%d,  
> Y:%d', [DC, X, Y]));
> +End;
> 
> -function TWinCEWidgetSet.MoveToEx(DC: HDC; X, Y: Integer; OldPoint:
> PPoint -  ): Boolean;
> -begin
> -  Result:=inherited MoveToEx(DC, X, Y, OldPoint);
> -end;
> +{-----------------------------------------------------------------------
> ------- +  Method:  MessageBox
> +  Params:  HWnd      - The handle of parent window
> +           LPText    - text in message box
> +           LPCaption - title of message box
> +           UType     - style of message box
> +  Returns: 0 if not successful (out of memory), otherwise one of the  
> defined
> +           values:
> +             IDABORT
> +             IDCANCEL
> +             IDIGNORE
> +             IDNO
> +             IDOK
> +             IDRETRY
> +             IDYES
> 
> -function TWinCEWidgetSet.MoveWindowOrgEx(DC: HDC; dX, dY: Integer):  
> Boolean;
> + The MessageBox function displays a modal dialog, with text and caption  
> defined,
> + and includes buttons.
> +
> -------------------------------------------------------------------------
> -----} +Function TWinCEWidgetSet.MessageBox(HWnd: HWND; LPText, LPCaption:
> PChar;   UType: Cardinal): Integer;
> +var
> +LPWCaption,LPWText : PWideChar;
> +Begin
> +  LPWCaption := CreatePWideCharFromString(String(LPCaption));
> +  LPWText := CreatePWideCharFromString(String(LPText));
> +  Result := Windows.MessageBox(HWnd, LPWText, LPWCaption, UType);
> +  DisposePWideChar(LPWCaption);
> +  DisposePWideChar(LPWText);
> +End;
> +
> +{-----------------------------------------------------------------------
> ------- +  Method:  MoveToEx
> +  Params:  DC       - handle of device context
> +           X        - x-coordinate of new current position
> +           Y        - x-coordinate of new current position
> +           OldPoint - address of old current position
> +  Returns: If the function succeeds.
> +
> +  Updates the current position to the specified point.
> +
> -------------------------------------------------------------------------
> -----} +Function TWinCEWidgetSet.MoveToEx(DC: HDC; X, Y: Integer;
> OldPoint:   PPoint): Boolean;
> +Begin
> +  Assert(False, Format('Trace:> [TWinCEWidgetSet.MoveToEx] DC:0x%x, X:%d,
>  
> Y:%d', [DC, X, Y]));
> +  Result := Boolean(Windows.MoveToEx(DC, X, Y, LPPOINT(OldPoint)));
> +  Assert(False, Format('Trace:< [TWinCEWidgetSet.MoveToEx] DC:0x%x, X:%d,
>  
> Y:%d', [DC, X, Y]));
> +End;
> +
> +{function TWinCEWidgetSet.MoveWindowOrgEx(DC: HDC; dX, dY: Integer):  
> Boolean;
>   begin
>     Result:=inherited MoveWindowOrgEx(DC, dX, dY);
>   end;
> @@ -1275,32 +1322,80 @@
>     Result:=inherited PairSplitterSetPosition(SplitterHandle,
>     NewPosition);
>   end;
> 
> -function TWinCEWidgetSet.PeekMessage(var lpMsg: TMsg; Handle: HWND;
> -  wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): Boolean;
> -begin
> -  Result:=inherited PeekMessage(lpMsg, Handle, wMsgFilterMin,  
> wMsgFilterMax,
> -    wRemoveMsg);
> -end;
> 
>   function TWinCEWidgetSet.PolyBezier(DC: HDC; Points: PPoint; NumPts:  
> Integer;
>     Filled, Continuous: boolean): boolean;
>   begin
>     Result:=inherited PolyBezier(DC, Points, NumPts, Filled, Continuous);
> -end;
> +end;}
> 
> -function TWinCEWidgetSet.Polygon(DC: HDC; Points: PPoint; NumPts:
> Integer; -  Winding: boolean): boolean;
> -begin
> -  Result:=inherited Polygon(DC, Points, NumPts, Winding);
> -end;
> +{-----------------------------------------------------------------------
> ------- +  Method:  PeekMessage
> +  Params:  LPMsg         - Where it should put the message
> +           Handle        - Handle of the window (thread)
> +           WMsgFilterMin - Lowest MSG to grab
> +           WMsgFilterMax - Highest MSG to grab
> +           WRemoveMsg    - Should message be pulled out of the queue
> +  Returns: Boolean if an event was there
> 
> -function TWinCEWidgetSet.Polyline(DC: HDC; Points: PPoint; NumPts:
> Integer -  ): boolean;
> -begin
> -  Result:=inherited Polyline(DC, Points, NumPts);
> -end;}
> +  Checks a thread message queue for a message.
> +
> -------------------------------------------------------------------------
> -----} +Function TWinCEWidgetSet.PeekMessage(Var LPMsg: TMsg; Handle:
> HWND;   WMsgFilterMin, WMsgFilterMax, WRemoveMsg: UINT): Boolean;
> +Begin
> +  Result := Boolean(Windows.PeekMessage(@LPMsg, Handle, WMsgFilterMin,  
> WMsgFilterMax, WRemoveMsg));
> +End;
> 
>   {----------------------------------------------------------------------
>   --------
> +  Method:  Polygon
> +  Params:  DC - handle to device context
> +           Points - pointer to polygon's vertices
> +           NumPts - count of polygon's vertices
> +           Winding
> +  Returns: If the function succeeds
> +
> +  Use Polygon to draw a closed, many-sided shape on the canvas, using the
>  
> value
> +  of Pen. After drawing the complete shape, Polygon fills the shape using
>  
> the
> +  value of Brush.
> +  The Points parameter is an array of points that give the vertices of
> the +  polygon.
> +  Winding determines how the polygon is filled.
> +  When Winding is True, Polygon
> +  fills the shape using the Winding fill algorithm. When Winding is
> False, +  Polygon uses the even-odd (alternative) fill algorithm.
> +  NumPts indicates the number of points to use.
> +  The first point is always connected to the last point.
> +  To draw a polygon on the canvas, without filling it, use the Polyline  
> method,
> +  specifying the first point a second time at the end.
> +
> -------------------------------------------------------------------------
> -----} +Function TWinCEWidgetSet.Polygon(DC: HDC; Points: PPoint; NumPts: 
> 
> Integer; Winding: Boolean): Boolean;
> +var
> +  PFMode : Longint;
> +Begin
> +  Assert(False, Format('Trace:TWinCEWidgetSet.Polygon --> DC: 0x%X,  
> Number of points: %D, Use winding fill: %S', [DC, NumPts,  
> BOOL_RESULT[Winding]]));
> +//  If Winding then
> +//    PFMode := SetPolyFillMode(DC, Windows.WINDING)
> +//  else
> +//    PFMode := SetPolyFillMode(DC, Windows.ALTERNATE);
> +  Result := Boolean(Windows.Polygon(DC, LPPOINT(Points), NumPts));
> +//  SetPolyFillMode(DC, PFMode);
> +End;
> +
> +{-----------------------------------------------------------------------
> ------- +  Method:  Polyline
> +  Params:  DC - handle of device context
> +           Points - address of array containing endpoints
> +           NumPts - number of points in the array
> +  Returns: If the function succeeds
> +
> +  Draws a series of line segments by connecting the points in the  
> specified
> +  array.
> +
> -------------------------------------------------------------------------
> -----} +Function TWinCEWidgetSet.Polyline(DC: HDC; Points: PPoint; NumPts:
>  
> Integer): Boolean;
> +Begin
> +  Result := Boolean(Windows.Polyline(DC, LPPOINT(Points), NumPts));
> +End;
> +
> +{-----------------------------------------------------------------------
> -------
>     Method:  PostMessage
>     Params: Handle - handle of destination window
>             Msg - message to post
> @@ -1337,19 +1432,33 @@
>   function TWinCEWidgetSet.RealizePalette(DC: HDC): Cardinal;
>   begin
>     Result:=inherited RealizePalette(DC);
> -end;
> +end;}
> 
> -function TWinCEWidgetSet.Rectangle(DC: HDC; X1, Y1, X2, Y2: Integer):  
> Boolean;
> -begin
> -  Result:=inherited Rectangle(DC, X1, Y1, X2, Y2);
> -end;
> +{-----------------------------------------------------------------------
> ------- +  Method:  Rectangle
> +  Params:  DC - handle of device context
> +           X1 - x-coordinate of bounding rectangle's upper-left corner
> +           Y1 - y-coordinate of bounding rectangle's upper-left corner
> +           X2 - x-coordinate of bounding rectangle's lower-right corner
> +           Y2 - y-coordinate of bounding rectangle's lower-right corner
> +  Returns: If the function succeeds
> 
> -function TWinCEWidgetSet.RectVisible(dc: hdc; const ARect: TRect):  
> Boolean;
> +  The Rectangle function draws a rectangle. The rectangle is outlined by 
> 
> using
> +  the current pen and filled by using the current brush.
> +
> -------------------------------------------------------------------------
> -----} +Function TWinCEWidgetSet.Rectangle(DC: HDC; X1, Y1, X2, Y2:
> Integer):   Boolean;
> +Begin
> +  Assert(False, Format('Trace:> [TWinCEWidgetSet.Rectangle] DC:0x%x,  
> X1:%d, Y1:%d, X2:%d, Y2:%d', [DC, X1, Y1, X2, Y2]));
> +  Result := Boolean(Windows.Rectangle(DC, X1, Y1, X2+1, Y2+1));
> +  Assert(False, Format('Trace:< [TWinCEWidgetSet.Rectangle] DC:0x%x,  
> X1:%d, Y1:%d, X2:%d, Y2:%d', [DC, X1, Y1, X2, Y2]));
> +End;
> +
> +function TWinCEWidgetSet.RectVisible(dc : hdc; const ARect: TRect) :  
> Boolean;
>   begin
> -  Result:=inherited RectVisible(dc, ARect);
> +  Result := Boolean(Windows.RectVisible(DC, LPRECT(@ARect)^));
>   end;
> 
> -function TWinCEWidgetSet.RegroupMenuItem(hndMenu: HMENU; GroupIndex:  
> integer
> +{function TWinCEWidgetSet.RegroupMenuItem(hndMenu: HMENU; GroupIndex:  
> integer
>     ): Boolean;
>   begin
>     Result:=inherited RegroupMenuItem(hndMenu, GroupIndex);
> @@ -1608,14 +1717,14 @@
>     ): Boolean;
>   begin
>     Result:=inherited SetProp(Handle, Str, Data);
> -end;
> +end;}
> 
>   function TWinCEWidgetSet.SetROP2(DC: HDC; Mode: Integer): Integer;
>   begin
>     Result:=inherited SetROP2(DC, Mode);
>   end;
> 
> -function TWinCEWidgetSet.SetScrollInfo(Handle: HWND; SBStyle: Integer;
> +{function TWinCEWidgetSet.SetScrollInfo(Handle: HWND; SBStyle: Integer;
>     ScrollInfo: TScrollInfo; bRedraw: Boolean): Integer;
>   begin
>     Result:=inherited SetScrollInfo(Handle, SBStyle, ScrollInfo, bRedraw);
> @@ -1673,17 +1782,24 @@
>     Assert(False, Format('Trace:< [TWin32WidgetSet.SETWINDOWLONG] HWND:  
> 0x%x, Idx: 0x%x(%d), Value: 0x%x(%d) --> 0x%x(%d)', [Handle, Idx, Idx,  
> NewLong, NewLong, Result, Result]));
>   End;
> 
> -{function TWinCEWidgetSet.SetWindowLong(Handle: HWND; Idx: Integer;
> -  NewLong: PtrInt): PtrInt;
> -begin
> -  Result:=inherited SetWindowLong(Handle, Idx, NewLong);
> -end;
> +{-----------------------------------------------------------------------
> ------- +  Method:  SetWindowOrgEx
> +  Params:  DC    - handle of device context
> +           NewX  - new x-coordinate of window origin
> +           NewY  - new y-coordinate of window origin
> +           Point - record receiving original origin
> +  Returns: Whether the call was successful
> 
> -function TWinCEWidgetSet.SetWindowOrgEx(dc: hdc; NewX, NewY: Integer;
> +  Sets the window origin of the device context by using the specified  
> coordinates.
> +
> -------------------------------------------------------------------------
> -----} +//roozbeh:does this always work?it is heavily used in labels and
> some   other drawing controls!
> +Function TWinCEWidgetSet.SetWindowOrgEx(DC: HDC; NewX, NewY: Integer;
>     OldPoint: PPoint): Boolean;
> -begin
> -  Result:=inherited SetWindowOrgEx(dc, NewX, NewY, OldPoint);
> -end;}
> +Begin
> +  Result := Boolean(SetViewPortOrgEx(DC, -NewX, -NewY,  
> LPPoint(OldPoint)));
> +//  Result:=inherited SetWindowOrgEx(dc, NewX, NewY, OldPoint);
> +End;
> +
>   {----------------------------------------------------------------------
>   --------
>     Method:  SetWindowPos
>     Params: HWnd            - handle of window
> Index: wincewinapih.inc
> ===================================================================
> --- wincewinapih.inc  (revision 9161)
> +++ wincewinapih.inc  (working copy)
> @@ -63,7 +63,7 @@
>   //function ComboBoxDropDown(Handle: HWND; DropDown: boolean): boolean;  
> override;
>   function CreateBitmap(Width, Height: Integer; Planes, BitCount: Longint;
>    
> BitmapBits: Pointer): HBITMAP; override;
>   //function CreateBitmapFromRawImage(const RawImage: TRawImage; var  
> Bitmap, MaskBitmap: HBitmap; AlwaysCreateMask: boolean): boolean;
> override; -//function CreateBrushIndirect(const LogBrush: TLogBrush):
> HBRUSH;   override;
> +function CreateBrushIndirect(const LogBrush: TLogBrush): HBRUSH;
> override;
>   function CreateCaret(Handle : HWND; Bitmap : hBitmap; width, Height :  
> Integer) : Boolean; override;
>   function CreateCompatibleBitmap(DC: HDC; Width, Height: Integer):  
> HBITMAP; override;
>   function CreateCompatibleDC(DC: HDC): HDC; override;
> @@ -92,7 +92,7 @@
>   function EnumFontFamiliesEx(DC: HDC; lpLogFont: PLogFont; Callback:  
> FontEnumExProc; Lparam: LParam; Flags: dword): longint; override;
>   function ExcludeClipRect(dc: hdc; Left, Top, Right, Bottom : Integer) : 
>   
> Integer; override;}
>   function ExtTextOut(DC: HDC; X, Y: Integer; Options: Longint; Rect:  
> PRect; Str: PChar; Count: Longint; Dx: PInteger): Boolean;  override;
> -{function ExtSelectClipRGN(dc: hdc; rgn : hrgn; Mode : Longint) :  
> Integer;  override;}
> +function ExtSelectClipRGN(dc: hdc; rgn : hrgn; Mode : Longint) :  
> Integer;  override;
> 
>   function FillRect(DC: HDC; const Rect: TRect; Brush: HBRUSH): Boolean;  
> override;
>   //function Frame(DC: HDC; const ARect: TRect): Integer; override;
> @@ -155,31 +155,31 @@
>   function InvalidateRect(aHandle : HWND; Rect : pRect; bErase : Boolean)
>   :  
> Boolean; override;
>   function IsWindowEnabled(handle: HWND): boolean; override;
>   function IsWindowVisible(handle: HWND): boolean; override;
> -{
> -Procedure LeaveCriticalSection(var CritSection: TCriticalSection);  
> Override;
> +
> +//Procedure LeaveCriticalSection(var CritSection: TCriticalSection);  
> Override;
>   function LineTo(DC: HDC; X, Y: Integer): Boolean; override;
> 
>   function MessageBox(hWnd: HWND; lpText, lpCaption: PChar; uType:  
> Cardinal): integer; override;
>   function MoveToEx(DC: HDC; X, Y: Integer; OldPoint: PPoint): Boolean;  
> override;
> -function MoveWindowOrgEx(DC: HDC; dX, dY: Integer): Boolean; override;
> +{function MoveWindowOrgEx(DC: HDC; dX, dY: Integer): Boolean; override;
> 
>   function PairSplitterAddSide(SplitterHandle, SideHandle: hWnd; Side:  
> integer): Boolean; override;
>   function PairSplitterGetInterfaceInfo: Boolean; override;
>   function PairSplitterRemoveSide(SplitterHandle, SideHandle: hWnd; Side: 
>   
> integer): Boolean; override;
> -function PairSplitterSetPosition(SplitterHandle: hWnd; var NewPosition:  
> integer): Boolean; override;
> +function PairSplitterSetPosition(SplitterHandle: hWnd; var NewPosition:  
> integer): Boolean; override;}
>   function PeekMessage(var lpMsg : TMsg; Handle : HWND; wMsgFilterMin,  
> wMsgFilterMax,wRemoveMsg : UINT): Boolean; override;
> -function PolyBezier(DC: HDC; Points: PPoint; NumPts: Integer; Filled,  
> Continuous: boolean): boolean; override;
> +//function PolyBezier(DC: HDC; Points: PPoint; NumPts: Integer; Filled,  
> Continuous: boolean): boolean; override;
>   function Polygon(DC: HDC; Points: PPoint; NumPts: Integer; Winding:  
> boolean): boolean; override;
> -function Polyline(DC: HDC; Points: PPoint; NumPts: Integer): boolean;  
> override;}
> +function Polyline(DC: HDC; Points: PPoint; NumPts: Integer): boolean;  
> override;
>   function PostMessage(Handle: HWND; Msg: Cardinal; wParam: WParam;
>   lParam:  
> LParam): Boolean; override;
> 
>   {function RadialArc(DC: HDC; x,y,width,height,sx,sy,ex,ey : Integer):  
> Boolean; override;
>   function RadialChord(DC: HDC; x,y,width,height,sx,sy,ex,ey : Integer):  
> Boolean; override;
>   function RadialPie(DC: HDC; x,y,width,height,sx,sy,ex,ey : Integer):  
> Boolean; override;
> -function RealizePalette(DC: HDC): Cardinal; override;
> +function RealizePalette(DC: HDC): Cardinal; override;}
>   function Rectangle(DC: HDC; X1, Y1, X2, Y2: Integer): Boolean; override;
>   function RectVisible(dc : hdc; const ARect: TRect) : Boolean; override;
> -function RegroupMenuItem(hndMenu: HMENU; GroupIndex: integer): Boolean;  
> override;
> +{function RegroupMenuItem(hndMenu: HMENU; GroupIndex: integer): Boolean; 
> 
> override;
>   Function ReleaseCapture : Boolean; override;}
>   function ReleaseDC(Window: HWND; DC: HDC): Integer; override;
>   //function RemoveProp(Handle: hwnd; Str: PChar): THandle; override;
> @@ -203,14 +203,14 @@
>   function SetCaretRespondToFocus(handle: HWND; ShowHideOnFocus: boolean):
>    
> Boolean; override;
>   function SetCursorPos(X, Y: Integer): Boolean; override;
>   function SetFocus(hWnd: HWND): HWND; override;
> -Function SetProp(Handle: hwnd; Str : PChar; Data : Pointer) : Boolean;  
> override;
> +Function SetProp(Handle: hwnd; Str : PChar; Data : Pointer) : Boolean;  
> override;}
>   function SetROP2(DC: HDC; Mode: Integer): Integer; override;
> -function SetScrollInfo(Handle : HWND; SBStyle : Integer; ScrollInfo:  
> TScrollInfo; bRedraw : Boolean): Integer; override;}
> +{function SetScrollInfo(Handle : HWND; SBStyle : Integer; ScrollInfo:  
> TScrollInfo; bRedraw : Boolean): Integer; override;}
>   function SetSysColors(cElements: Integer; const lpaElements; const  
> lpaRgbValues): Boolean; override;
>   {Function SetTextCharacterExtra(_hdc : hdc; nCharExtra :  
> Integer):Integer; override;}
>   function SetTextColor(DC: HDC; Color: TColorRef): TColorRef; override;
>   function SetWindowLong(Handle: HWND; Idx: Integer; NewLong: PtrInt):  
> PtrInt; override;
> -//function SetWindowOrgEx(dc : hdc; NewX, NewY : Integer; OldPoint:  
> PPoint) : Boolean; override;
> +function SetWindowOrgEx(dc : hdc; NewX, NewY : Integer; OldPoint: PPoint)
>  
> : Boolean; override;
>   function SetWindowPos(hWnd: HWND; hWndInsertAfter: HWND;
>         X, Y, cx, cy: Integer; uFlags: UINT): Boolean;  override;
>   {function ShowCaret(hWnd: HWND): Boolean; override;
> Index: wincewscontrols.pp
> ===================================================================
> --- wincewscontrols.pp        (revision 9161)
> +++ wincewscontrols.pp        (working copy)
> @@ -195,11 +195,11 @@
>         if TCustomControl(AWinControl).BorderStyle = bsSingle then
>           FlagsEx := FlagsEx or WS_EX_CLIENTEDGE;
>       {$IFDEF VerboseSizeMsg}
> -    writeln('TWin32WidgetSet.CreateComponent A  
> ',AWinControl.Name,':',AWinControl.ClassName,'  
> ',Left,',',Top,',',Width,',',Height);
> +    writeln('TWinCEWidgetSet.CreateComponent A  
> ',AWinControl.Name,':',AWinControl.ClassName,'  
> ',Left,',',Top,',',Width,',',Height);
>       {$ENDIF}
> 
> -    //Assert(False, Format('Trace:TWin32WidgetSet.CreateComponent -  
> Creating component %S with the caption of %S', [AWinControl.ClassName,  
> AWinControl.Caption]));
> -    //Assert(False, Format('Trace:TWin32WidgetSet.CreateComponent - Left:
>  
> %D, Top: %D, Width: %D, Height: %D, Parent handle: 0x%X, instance handle: 
> 
> 0x%X', [Left, Top, Width, Height, Parent, HInstance]));
> +    //Assert(False, Format('Trace:TWinCEWidgetSet.CreateComponent -  
> Creating component %S with the caption of %S', [AWinControl.ClassName,  
> AWinControl.Caption]));
> +    //Assert(False, Format('Trace:TWinCEWidgetSet.CreateComponent - Left:
>  
> %D, Top: %D, Width: %D, Height: %D, Parent handle: 0x%X, instance handle: 
> 
> 0x%X', [Left, Top, Width, Height, Parent, HInstance]));
>     end;
>   end;
> 
> @@ -395,7 +395,6 @@
> 
>       if AfterWnd = 0 then Exit; // nothing to do
>     end;
> -
>     Windows.SetWindowPos(AChild.Handle, AfterWnd, 0, 0, 0, 0,
>       SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOOWNERZORDER or
>       SWP_NOSIZE or SWP_NOSENDCHANGING);
> @@ -416,20 +415,20 @@
>     IntfLeft, IntfTop, IntfWidth, IntfHeight: integer;
>     suppressMove: boolean;
>   begin
> -(*  IntfLeft := ALeft; IntfTop := ATop;
> +  IntfLeft := ALeft; IntfTop := ATop;
>     IntfWidth := AWidth; IntfHeight := AHeight;
>     LCLBoundsToWin32Bounds(AWinControl, IntfLeft, IntfTop, IntfWidth,  
> IntfHeight);
>     {$IFDEF VerboseSizeMsg}
> -  writeln('TWin32WSWinControl.ResizeWindow A  
> ',AWinControl.Name,':',AWinControl.ClassName,
> +  writeln('TWinCEWSWinControl.ResizeWindow A  
> ',AWinControl.Name,':',AWinControl.ClassName,
>       ' LCL=',ALeft,',',ATop,',',AWidth,',',AHeight,
>       ' Win32=',IntfLeft,',',IntfTop,',',IntfWidth,',',IntfHeight,
>       '');
>     {$ENDIF}
>     suppressMove := false;
>     AdaptBounds(AWinControl, IntfLeft, IntfTop, IntfWidth, IntfHeight,  
> suppressMove);
> -  if not suppressMove then
> -    MoveWindow(AWinControl.Handle, IntfLeft, IntfTop, IntfWidth,  
> IntfHeight, true);
> -  LCLControlSizeNeedsUpdate(AWinControl, false);*)
> +//  if not suppressMove then
> +//    MoveWindow(AWinControl.Handle, IntfLeft, IntfTop, IntfWidth,  
> IntfHeight, true);
> +  LCLControlSizeNeedsUpdate(AWinControl, false);
>   end;
> 
>   procedure TWinCEWSWinControl.SetColor(const AWinControl: TWinControl);
> @@ -489,7 +488,7 @@
>   // which actually implement something
>   ////////////////////////////////////////////////////
>   //  RegisterWSComponent(TDragImageList, TWSDragImageList);
> -  RegisterWSComponent(TControl, TWinCEWSControl);
> +//  RegisterWSComponent(TControl, TWinCEWSControl);
>     RegisterWSComponent(TWinControl, TWinCEWSWinControl);
>   //  RegisterWSComponent(TGraphicControl, TWSGraphicControl);
>   //  RegisterWSComponent(TCustomControl, TWSCustomControl);
> 
> _________________________________________________________________
>      To unsubscribe: mail [EMAIL PROTECTED] with
>                 "unsubscribe" as the Subject
>    archives at http://www.lazarus.freepascal.org/mailarchives

_________________________________________________________________
     To unsubscribe: mail [EMAIL PROTECTED] with
                "unsubscribe" as the Subject
   archives at http://www.lazarus.freepascal.org/mailarchives

Reply via email to