* Splitted winapi*.inc into a winapi and a lcl interface communication part

git-svn-id: trunk@4836 -
This commit is contained in:
marc 2003-11-24 11:03:07 +00:00
parent c5ee613bc8
commit 02f5dd89a3
20 changed files with 2975 additions and 2626 deletions

6
.gitattributes vendored
View File

@ -898,6 +898,10 @@ lcl/include/idletimer.inc svneol=native#text/pascal
lcl/include/imglist.inc svneol=native#text/pascal
lcl/include/inputdialog.inc svneol=native#text/pascal
lcl/include/interfacebase.inc svneol=native#text/pascal
lcl/include/intfbaselcl.inc svneol=native#text/pascal
lcl/include/intfbasewinapi.inc svneol=native#text/pascal
lcl/include/lclintf.inc svneol=native#text/pascal
lcl/include/lclintfh.inc svneol=native#text/pascal
lcl/include/listcolumn.inc svneol=native#text/pascal
lcl/include/listcolumns.inc svneol=native#text/pascal
lcl/include/listitem.inc svneol=native#text/pascal
@ -967,6 +971,8 @@ lcl/interfaces/gtk/gtkglobals.pp svneol=native#text/pascal
lcl/interfaces/gtk/gtkimages.lrs svneol=native#text/pascal
lcl/interfaces/gtk/gtkint.pp svneol=native#text/pascal
lcl/interfaces/gtk/gtkkeysyms.inc svneol=native#text/pascal
lcl/interfaces/gtk/gtklclintf.inc svneol=native#text/pascal
lcl/interfaces/gtk/gtklclintfh.inc svneol=native#text/pascal
lcl/interfaces/gtk/gtklistsl.inc svneol=native#text/pascal
lcl/interfaces/gtk/gtklistslh.inc svneol=native#text/pascal
lcl/interfaces/gtk/gtklistviewcallback.inc svneol=native#text/pascal

View File

@ -5727,7 +5727,7 @@ function TMainIDE.DoTestCompilerSettings(
begin
Result:=mrCancel;
if (Project1=nil) or (ToolStatus<>itNone) then exit;
// change tool status
CheckCompilerOptsDlg:=TCheckCompilerOptsDlg.Create(Application);
try
@ -10165,6 +10165,9 @@ end.
{ =============================================================================
$Log$
Revision 1.674 2003/11/24 11:03:07 marc
* Splitted winapi*.inc into a winapi and a lcl interface communication part
Revision 1.673 2003/11/22 15:47:52 mattias
added auto stop debugging on close

File diff suppressed because it is too large Load Diff

475
lcl/include/intfbaselcl.inc Normal file
View File

@ -0,0 +1,475 @@
{ $Id$ }
{******************************************************************************
TInterfaceBase
interface communication stuff
!! In this file only interface related code as defined in lclintfh.inc
Most routines implement only the default
!! Keep this alphabetical !!
******************************************************************************
*****************************************************************************
* *
* This file is part of the Lazarus Component Library (LCL) *
* *
* See the file COPYING.LCL, included in this distribution, *
* for details about the copyright. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* *
*****************************************************************************
}
//##apiwiz##sps## // Do not remove
procedure TInterfaceBase.AttachMenuToWindow(AMenuObject: TComponent);
begin
end;
procedure TInterfaceBase.CallDefaultWndHandler(Sender: TObject; var Message);
begin
end;
function TInterfaceBase.CheckMenuItem(hndMenu: HMENU; uIDEnableItem: Integer; bChecked: Boolean): Boolean;
begin
Result := False;
end;
// the clipboard functions are internally used by TClipboard
function TInterfaceBase.ClipboardFormatToMimeType(FormatID: TClipboardFormat): string;
begin
Result := '';
end;
function TInterfaceBase.ClipboardGetData(ClipboardType: TClipboardType;
FormatID: TClipboardFormat; Stream: TStream): boolean;
begin
Result := false;
end;
// ! List will be created. You must free it yourself with FreeMem(List) !
function TInterfaceBase.ClipboardGetFormats(ClipboardType: TClipboardType;
var Count: integer; var List: PClipboardFormat): boolean;
begin
Result := true;
Count := 0;
List := nil;
end;
function TInterfaceBase.ClipboardGetOwnerShip(ClipboardType: TClipboardType;
OnRequestProc: TClipboardRequestEvent; FormatCount: integer;
Formats: PClipboardFormat): boolean;
begin
Result := false;
end;
function TInterfaceBase.ClipboardRegisterFormat(
const AMimeType: string): TClipboardFormat;
begin
Result := 0;
end;
function TInterfaceBase.ComboBoxDropDown(Handle: HWND;
DropDown: boolean): boolean;
begin
Result := false;
end;
function TInterfaceBase.CreateBitmapFromRawImage(const RawImage: TRawImage;
var Bitmap, MaskBitmap: HBitmap): boolean;
begin
Result := false;
end;
//todo: remove ?
function TInterfaceBase.CreateEmptyRegion: hRGN;
begin
Result:=CreateRectRGN(0,0,0,0);
end;
function TInterfaceBase.CreatePixmapIndirect(const Data: Pointer; const TransColor: Longint): HBITMAP;
begin
Result := 0;
end;
function TInterfaceBase.CreateRegionCopy(SrcRGN: hRGN): hRGN;
begin
// If the interface has a better way to create a copy it can override this
Result:=CreateEmptyRegion;
CombineRGN(Result,SrcRGN,SrcRGN,RGN_COPY);
end;
function TInterfaceBase.DCClipRegionValid(DC: HDC): boolean;
var
Clip: hRGN;
begin
// If the interface has a better way to check a region it can override this
Clip:=CreateEmptyRegion;
Result:=GetClipRGN(DC,Clip)>=0;
DeleteObject(Clip);
end;
function TInterfaceBase.EnableMenuItem(hndMenu: HMENU; uIDEnableItem: Integer; bEnable: Boolean): Boolean;
begin
Result := False;
end;
function TInterfaceBase.Frame(DC: HDC; const ARect: TRect) : integer;
begin
Result:= 0;
end;
function TInterfaceBase.Frame3d(DC: HDC; var ARect: TRect;
const FrameWidth: integer; const Style: TGraphicsBevelCut) : boolean;
begin
Result:= false;
end;
function TInterfaceBase.GetBitmapRawImageDescription(Bitmap: HBITMAP;
Desc: PRawImageDescription): boolean;
begin
Result:=false;
end;
function TInterfaceBase.GetCaretRespondToFocus(handle: HWND;
var ShowHideOnFocus: boolean): Boolean;
begin
ShowHideOnFocus := true;
Result := False;
end;
function TInterfaceBase.GetClientBounds(Handle : HWND; var ARect: TRect) : Boolean;
begin
Result := false;
end;
function TInterfaceBase.GetCmdLineParamDescForInterface: string;
begin
Result := '';
end;
function TInterfaceBase.GetDeviceRawImageDescription(DC: HDC;
Desc: PRawImageDescription): boolean;
begin
Result := false;
end;
function TInterfaceBase.GetDeviceSize(DC: HDC; var p: TPoint): boolean;
begin
p.X := 0;
p.Y := 0;
Result := false;
end;
function TInterfaceBase.GetDesignerDC(WindowHandle: HWND): HDC;
begin
Result:=GetDC(WindowHandle);
end;
function TInterfaceBase.GetNotebookTabIndexAtPos(Handle: HWND;
const ClientPos: TPoint): integer;
begin
Result:=-1;
end;
function TInterfaceBase.GetRawImageFromDevice(SrcDC: HDC;
const SrcRect: TRect; var NewRawImage: TRawImage): boolean;
begin
Result:=false;
end;
function TInterfaceBase.GetRawImageFromBitmap(SrcBitmap, SrcMaskBitmap: HBITMAP;
const SrcRect: TRect; var NewRawImage: TRawImage): boolean;
begin
Result:=false;
end;
// TODO: remove
function TInterfaceBase.GetScrollBarSize(Handle: HWND;
SBStyle: Integer): integer;
begin
Result := GetSystemMetrics(SBStyle);
end;
function TInterfaceBase.GetScrollbarVisible(Handle: HWND;
SBStyle: Integer): boolean;
begin
Result := false;
end;
function TInterfaceBase.GetWindowRelativePosition(Handle : hwnd;
var Left, Top: integer): boolean;
{ returns the position of the left, top coordinate relative to the clientorigin
of its parent. This is normally the Left, Top of a TWinControl. But not
during moving/sizing. }
var
ChildRect: TRect;
ParentLeftTop: TPoint;
ParentHandle: hWnd;
begin
Result:=false;
GetWindowRect(Handle,ChildRect);
Left:=ChildRect.Left;
Top:=ChildRect.Top;
ParentHandle:=GetParent(Handle);
if ParentHandle<>0 then begin
ParentLeftTop.X:=0;
ParentLeftTop.Y:=0;
if not ClientToScreen(ParentHandle,ParentLeftTop) then exit;
dec(Left,ParentLeftTop.X);
dec(Top,ParentLeftTop.Y);
end;
Result := true;
end;
function TInterfaceBase.GetWindowSize(Handle : hwnd;
var Width, Height: integer): boolean;
// Returns the current Width and Height
begin
Result:=false;
end;
Function TInterfaceBase.InvalidateFrame(aHandle : HWND; ARect : pRect;
bErase : Boolean; BorderWidth: integer) : Boolean;
function Min(i1, i2: integer): integer;
begin
if i1<=i2 then Result:=i1 else Result:=i2;
end;
function Max(i1, i2: integer): integer;
begin
if i1<=i2 then Result:=i2 else Result:=i1;
end;
var
BorderRect: TRect;
begin
Result:=false;
BorderRect:=ARect^;
// left
BorderRect.Right:=Min(BorderRect.Right,BorderRect.Left+BorderWidth);
if not InvalidateRect(aHandle,@BorderRect,bErase) then exit;
BorderRect.Right:=ARect^.Right;
// top
BorderRect.Bottom:=Min(BorderRect.Bottom,BorderRect.Top+BorderWidth);
if not InvalidateRect(aHandle,@BorderRect,bErase) then exit;
BorderRect.Bottom:=ARect^.Bottom;
// right
BorderRect.Left:=Max(BorderRect.Left,BorderRect.Right-BorderWidth);
if not InvalidateRect(aHandle,@BorderRect,bErase) then exit;
BorderRect.Left:=ARect^.Left;
// bottom
BorderRect.Top:=Max(BorderRect.Top,BorderRect.Bottom-BorderWidth);
if not InvalidateRect(aHandle,@BorderRect,bErase) then exit;
Result:=true;
end;
Function TInterfaceBase.LoadStockPixmap(StockID: longint) : HBitmap;
begin
Case StockID of
idButtonOk :
Result := CreatePixmapIndirect(@IMGOK_Check[0], GetSysColor(COLOR_BTNFACE));
idButtonYes :
Result := CreatePixmapIndirect(@IMGOK_Check[0], GetSysColor(COLOR_BTNFACE));
idButtonNo :
Result := CreatePixmapIndirect(@IMG_NO[0], GetSysColor(COLOR_BTNFACE));
idButtonCancel :
Result := CreatePixmapIndirect(@IMGCancel_X[0], GetSysColor(COLOR_BTNFACE));
idButtonHelp :
Result := CreatePixmapIndirect(@IMGHELP[0], GetSysColor(COLOR_BTNFACE));
idButtonAll :
Result := CreatePixmapIndirect(@IMGAll_Check[0], GetSysColor(COLOR_BTNFACE));
idButtonYesToAll :
Result := CreatePixmapIndirect(@IMGAll_Check[0], GetSysColor(COLOR_BTNFACE));
idButtonNoToAll :
Result := CreatePixmapIndirect(@IMGCancel_X[0], GetSysColor(COLOR_BTNFACE));
idButtonAbort :
Result := CreatePixmapIndirect(@IMGCancel_X[0], GetSysColor(COLOR_BTNFACE));
idButtonRetry :
Result := CreatePixmapIndirect(@IMG_RETRY[0], GetSysColor(COLOR_BTNFACE));
idButtonIgnore :
Result := CreatePixmapIndirect(@IMG_IGNIORE[0], GetSysColor(COLOR_BTNFACE));
idButtonClose :
Result := CreatePixmapIndirect(@IMGClose[0], GetSysColor(COLOR_BTNFACE));
idDialogWarning :
Result := CreatePixmapIndirect(@IMGWarning[0], GetSysColor(COLOR_BTNFACE));
idDialogError :
Result := CreatePixmapIndirect(@IMGError[0], GetSysColor(COLOR_BTNFACE));
idDialogInfo :
Result := CreatePixmapIndirect(@IMGInfo[0], GetSysColor(COLOR_BTNFACE));
idDialogConfirm :
Result := CreatePixmapIndirect(@IMGConfirmation[0], GetSysColor(COLOR_BTNFACE));
else
Result := CreatePixmapIndirect(@IMGOK_Check[0], GetSysColor(COLOR_BTNFACE));
end;
end;
function TInterfaceBase.MoveWindowOrgEx(dc : hdc; dX,dY : Integer): boolean;
var
P : TPoint;
Begin
GetWindowOrgEx(dc, @P);
Result:=SetWindowOrgEx(dc, P.x-dX, P.y-dY, @P);
end;
function TInterfaceBase.PairSplitterAddSide(SplitterHandle, SideHandle: hWnd;
Side: integer): Boolean;
begin
Result:=false;
end;
function TInterfaceBase.PairSplitterGetInterfaceInfo: boolean;
begin
Result:=false;
end;
function TInterfaceBase.PairSplitterRemoveSide(SplitterHandle, SideHandle: hWnd;
Side: integer): Boolean;
begin
Result:=false;
end;
function TInterfaceBase.PairSplitterSetPosition(SplitterHandle: hWnd;
var NewPosition: integer): Boolean;
begin
Result:=false;
end;
Function TInterfaceBase.PromptUser(const DialogCaption, DialogMessage : String;
DialogType : longint; Buttons : PLongint;
ButtonCount, DefaultIndex, EscapeResult : Longint) : Longint;
begin
if PromptDialogFunction<>nil then
Result:=PromptDialogFunction(DialogCaption, DialogMessage, DialogType,
Buttons, ButtonCount, DefaultIndex, EscapeResult, true, 0, 0)
else
Result:=0;
end;
function TInterfaceBase.PromptUserAtXY(const DialogCaption,
DialogMessage : String;
DialogType : longint; Buttons : PLongint;
ButtonCount, DefaultIndex, EscapeResult : Longint;
X, Y : Longint) : Longint;
begin
if PromptDialogFunction<>nil then
Result:=PromptDialogFunction(DialogCaption, DialogMessage, DialogType,
Buttons, ButtonCount, DefaultIndex, EscapeResult, false, X, Y)
else
Result:=0;
end;
function TInterfaceBase.RadialArc(DC: HDC;
x,y,width,height,sx,sy,ex,ey : Integer): Boolean;
var
A1, A2 : Extended;
begin
Coords2Angles(x,y,width,height,sx,sy,ex,ey,A1,A2);
Result := Arc(DC, X, Y, Width, Height, Round(A1), Round(A2));
end;
function TInterfaceBase.RadialChord(DC: HDC;
x,y,width,height,sx,sy,ex,ey : Integer): Boolean;
var
A1, A2 : Extended;
Begin
Coords2Angles(x,y,width,height,sx,sy,ex,ey,A1,A2);
Result := AngleChord(DC, X, Y, Width, Height, Round(A1), Round(A2));
End;
function TInterfaceBase.RadialPie(DC: HDC; x,y,width,height,sx,sy,ex,ey : Integer): Boolean;
var
A1, A2 : Extended;
begin
Coords2Angles(x,y,width,height,sx,sy,ex,ey,A1,A2);
Result := RadialPieWithAngles(DC, X, Y, Width, Height, Round(A1), Round(A2));
end;
function TInterfaceBase.RadialPieWithAngles(DC: HDC; X,Y,Width,Height,
Angle1, Angle2: Integer): Boolean;
var
Points : PPoint;
Count : Longint;
begin
Result := False;
Points := nil;
Count := 0;
PolyBezierArcPoints(X,Y,Width,Height,Angle1, Angle2, 0, Points, Count);
Inc(Count,2);
ReallocMem(Points, Count*SizeOf(TPoint));
Points[Count - 2] := CenterPoint(Rect(X,Y,X+Width,Y+Height));
Points[Count - 1] := Points[0];
Polygon(DC, Points, Count, True);
ReallocMem(Points, 0);
Result := True;
end;
function TInterfaceBase.RadioMenuItemGroup(hndMenu: HMENU; bRadio: Boolean): Boolean;
begin
Result := false;
end;
function TInterfaceBase.RegroupMenuItem(hndMenu: HMENU; GroupIndex: Integer) : Boolean;
begin
Result := false;
end;
function TInterfaceBase.ReleaseDesignerDC(hWnd: HWND; DC: HDC): Integer;
begin
Result := ReleaseDC(hWnd, DC);
end;
function TInterfaceBase.RequestInput(const InputCaption, InputPrompt : String;
MaskInput : Boolean; var Value : String) : Boolean;
begin
if InputDialogFunction<>nil then
Result := InputDialogFunction(InputCaption, InputPrompt, MaskInput, Value)
else
Result := false;
end;
function TInterfaceBase.RightJustifyMenuItem(HndMenu: HMenu;
bRightJustify: boolean): Boolean;
begin
Result := False;
end;
procedure TInterfaceBase.SendCachedLCLMessages;
begin
end;
function TInterfaceBase.SetCaretRespondToFocus(Handle: HWnd;
ShowHideOnFocus: Boolean): Boolean;
begin
Result := False;
end;
function TInterfaceBase.SetComboMinDropDownSize(Handle: HWND;
MinItemsWidth, MinItemsHeight, MinItemCount: integer): boolean;
begin
Result := false;
end;
function TInterfaceBase.StretchMaskBlt(DestDC: HDC;
X, Y, Width, Height: Integer; SrcDC: HDC;
XSrc, YSrc, SrcWidth, SrcHeight: Integer;
Mask: HBITMAP; XMask, YMask: Integer; Rop: DWORD): Boolean;
begin
Result := False;
end;
//##apiwiz##eps## // Do not remove
{ =============================================================================
$Log$
Revision 1.1 2003/11/24 11:03:07 marc
* Splitted winapi*.inc into a winapi and a lcl interface communication part
}

File diff suppressed because it is too large Load Diff

454
lcl/include/lclintf.inc Normal file
View File

@ -0,0 +1,454 @@
{ $Id$ }
(******************************************************************************
All interface communication related stuff goes here.
This file is used by LCLIntf.pas
If a procedure is platform dependent then it should call:
InterfaceObject.MyDependentProc
If a procedure insn't platform dependent, it is no part of InterfaseBase has
to be implementerd here
!! Keep this alphabetical !!
*****************************************************************************
* *
* This file is part of the Lazarus Component Library (LCL) *
* *
* See the file COPYING.LCL, included in this distribution, *
* for details about the copyright. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* *
*****************************************************************************
******************************************************************************)
{******************************************************************************
These functions redirect to the platform specific interface object.
Note:
the section for not referring InterfaceObject is at the end
******************************************************************************}
//##apiwiz##sps## // Do not remove
procedure AttachMenuToWindow(AMenuObject: TComponent);
begin
InterfaceObject.AttachMenuToWindow(AMenuObject);
end;
procedure CallDefaultWndHandler(Sender: TObject; var Message);
begin
InterfaceObject.CallDefaultWndHandler(Sender,Message);
end;
function CheckMenuItem(hndMenu: HMENU; uIDEnableItem: Integer; bChecked: Boolean): Boolean;
begin
Result := InterfaceObject.CheckMenuItem(hndMenu,uIDEnableItem,bChecked);
end;
// the clipboard functions are internally used by TClipboard
function ClipboardFormatToMimeType(FormatID: TClipboardFormat): string;
begin
Result := InterfaceObject.ClipboardFormatToMimeType(FormatID);
end;
function ClipboardGetData(ClipboardType: TClipboardType;
FormatID: TClipboardFormat; Stream: TStream): boolean;
begin
Result := InterfaceObject.ClipboardGetData(ClipboardType, FormatID, Stream);
end;
// ! List will be created. You must free it yourself with FreeMem(List) !
function ClipboardGetFormats(ClipboardType: TClipboardType;
var Count: integer; var List: PClipboardFormat): boolean;
begin
Result := InterfaceObject.ClipboardGetFormats(ClipboardType,Count,List);
end;
function ClipboardGetOwnerShip(ClipboardType: TClipboardType;
OnRequestProc: TClipboardRequestEvent; FormatCount: integer;
Formats: PClipboardFormat): boolean;
begin
Result := InterfaceObject.ClipboardGetOwnerShip(ClipboardType, OnRequestProc,
FormatCount, Formats);
end;
function ClipboardRegisterFormat(const AMimeType: string): TClipboardFormat;
begin
Result := InterfaceObject.ClipboardRegisterFormat(AMimeType);
end;
function ComboBoxDropDown(Handle: HWND; DropDown: boolean): boolean;
begin
Result := InterfaceObject.ComboBoxDropDown(Handle,DropDown);
end;
function CreateBitmapFromRawImage(const RawImage: TRawImage;
var Bitmap, MaskBitmap: HBitmap): boolean;
begin
Result := InterfaceObject.CreateBitmapFromRawImage(RawImage,Bitmap,MaskBitmap);
end;
function CreateEmptyRegion: hRGN;
begin
Result := InterfaceObject.CreateEmptyRegion;
end;
function CreatePixmapIndirect(const Data: Pointer; const TransColor: Longint): HBITMAP;
begin
Result := InterfaceObject.CreatePixmapIndirect(Data, TransColor);
end;
function CreateRegionCopy(SrcRGN: hRGN): hRGN;
begin
Result := InterfaceObject.CreateRegionCopy(SrcRGN);
end;
function DCClipRegionValid(DC: HDC): boolean;
begin
Result := InterfaceObject.DCClipRegionValid(DC);
end;
function EnableMenuItem(hndMenu: HMENU; uIDEnableItem: Integer; bEnable: Boolean): Boolean;
begin
Result := InterfaceObject.EnableMenuItem(hndMenu, uIDEnableItem, bEnable);
end;
function Frame(DC: HDC; const ARect: TRect): Integer;
begin
Result:= InterfaceObject.Frame(DC, ARect);
end;
function Frame3d(DC : HDC; var ARect : TRect; const FrameWidth : integer;
const Style: TGraphicsBevelCut) : boolean;
begin
Result:= InterfaceObject.Frame3d(DC, ARect, FrameWidth, Style);
end;
function GetBitmapRawImageDescription(Bitmap: HBITMAP;
Desc: PRawImageDescription): boolean;
begin
Result := InterfaceObject.GetBitmapRawImageDescription(Bitmap,Desc);
end;
function GetCaretRespondToFocus(handle: HWND; var ShowHideOnFocus: boolean): Boolean;
begin
Result := InterfaceObject.GetCaretRespondToFocus(handle,ShowHideOnFocus);
end;
{------------------------------------------------------------------------------
Function: GetClientBounds
Params: handle:
ARect:
Result:
Returns: true on success
Returns the client bounds of a control. The client bounds is the rectangle of
the inner area of a control, where the child controls are visible. The
coordinates are relative to the control's left and top.
------------------------------------------------------------------------------}
function GetClientBounds(Handle: HWND; var ARect: TRect): Boolean;
begin
Result := InterfaceObject.GetClientBounds(Handle, ARect);
end;
{------------------------------------------------------------------------------
Function: GetCmdLineParamDescForInterface
Params: none
Returns: ansistring
Returns a description of the command line parameters, that are understood by
the interface.
------------------------------------------------------------------------------}
function GetCmdLineParamDescForInterface: string;
begin
Result := InterfaceObject.GetCmdLineParamDescForInterface;
end;
function GetDesignerDC(WindowHandle: HWND): HDC;
begin
Result := InterfaceObject.GetDesignerDC(WindowHandle);
end;
function GetDeviceRawImageDescription(DC: HDC;
Desc: PRawImageDescription): boolean;
begin
Result := InterfaceObject.GetDeviceRawImageDescription(DC,Desc);
end;
function GetDeviceSize(DC: HDC; var p: TPoint): boolean;
begin
Result := InterfaceObject.GetDeviceSize(DC,p);
end;
function GetNotebookTabIndexAtPos(Handle: HWND;
const ClientPos: TPoint): integer;
begin
Result := InterfaceObject.GetNotebookTabIndexAtPos(Handle,ClientPos);
end;
function GetRawImageFromDevice(SrcDC: HDC; const SrcRect: TRect;
var NewRawImage: TRawImage): boolean;
begin
Result := InterfaceObject.GetRawImageFromDevice(SrcDC,SrcRect,NewRawImage);
end;
function GetRawImageFromBitmap(SrcBitmap, SrcMaskBitmap: HBITMAP;
const SrcRect: TRect; var NewRawImage: TRawImage): boolean;
begin
Result := InterfaceObject.GetRawImageFromBitmap(SrcBitmap,SrcMaskBitmap,
SrcRect,NewRawImage);
end;
function GetScrollBarSize(Handle: HWND; SBStyle: Integer): integer;
begin
Result := InterfaceObject.GetScrollBarSize(Handle, SBStyle);
end;
function GetScrollbarVisible(Handle: HWND; SBStyle: Integer): boolean;
begin
Result := InterfaceObject.GetScrollbarVisible(Handle, SBStyle);
end;
{------------------------------------------------------------------------------
function GetWindowRelativePosition(Handle: hwnd;
var Left, Top: integer): boolean;
Returns the Left, Top, relative to the client origin of its parent.
------------------------------------------------------------------------------}
function GetWindowRelativePosition(Handle : hwnd;
var Left, Top: integer): boolean;
begin
Result := InterfaceObject.GetWindowRelativePosition(Handle,Left,Top);
end;
{------------------------------------------------------------------------------
Function InvalidateFrame(aHandle : HWND; ARect : pRect; bErase : Boolean;
BorderWidth: integer) : Boolean;
Calls InvalidateRect for the borderframe.
------------------------------------------------------------------------------}
function InvalidateFrame(aHandle : HWND; ARect : pRect; bErase : Boolean; BorderWidth: integer) : Boolean;
begin
Result := InterfaceObject.InvalidateFrame(aHandle,ARect,bErase,BorderWidth);
end;
function LoadStockPixmap(StockID: longint) : HBitmap;
begin
Result := InterfaceObject.LoadStockPixmap(StockID);
end;
function MoveWindowOrgEx(dc : hdc; dX,dY : Integer): boolean;
begin
Result := InterfaceObject.MoveWindowOrgEx(DC, dX, dY);
end;
function PairSplitterAddSide(SplitterHandle, SideHandle: hWnd;
Side: integer): Boolean;
begin
Result:=InterfaceObject.PairSplitterAddSide(SplitterHandle,SideHandle,Side);
end;
function PairSplitterGetInterfaceInfo: boolean;
begin
Result:=InterfaceObject.PairSplitterGetInterfaceInfo;
end;
function PairSplitterRemoveSide(SplitterHandle, SideHandle: hWnd;Side: integer): Boolean;
begin
Result:=InterfaceObject.PairSplitterRemoveSide(SplitterHandle,SideHandle, Side);
end;
function PairSplitterSetPosition(SplitterHandle: hWnd; var NewPosition: integer): Boolean;
begin
Result:=InterfaceObject.PairSplitterSetPosition(SplitterHandle,NewPosition);
end;
function PromptUser(const DialogMessage : String; DialogType : longint; Buttons : PLongint;
ButtonCount, DefaultIndex, EscapeResult : Longint) : Longint;
begin
Result := InterfaceObject.PromptUser('', DialogMessage, DialogType, Buttons, ButtonCount, DefaultIndex, EscapeResult);
end;
function PromptUser(const DialogCaption, DialogMessage : String; DialogType : longint; Buttons : PLongint;
ButtonCount, DefaultIndex, EscapeResult : Longint) : Longint;
begin
Result := InterfaceObject.PromptUser(DialogCaption, DialogMessage, DialogType, Buttons, ButtonCount, DefaultIndex, EscapeResult);
end;
function PromptUserAtXY(const DialogMessage : String; DialogType : longint; Buttons : PLongint;
ButtonCount, DefaultIndex, EscapeResult : Longint; X, Y : Longint) : Longint;
begin
Result := InterfaceObject.PromptUserAtXY('', DialogMessage, DialogType, Buttons, ButtonCount, DefaultIndex, EscapeResult, X, Y);
end;
function PromptUserAtXY(const DialogCaption, DialogMessage : String; DialogType : longint; Buttons : PLongint;
ButtonCount, DefaultIndex, EscapeResult : Longint; X, Y : Longint) : Longint;
begin
Result := InterfaceObject.PromptUserAtXY(DialogCaption, DialogMessage, DialogType, Buttons, ButtonCount, DefaultIndex, EscapeResult, X, Y);
end;
function RadialChord(DC: HDC; x,y,width,height,sx,sy,ex,ey : Integer): Boolean;
begin
Result := InterfaceObject.RadialChord(DC, x,y,width,height,sx,sy,ex,ey);
end;
function RadialArc(DC: HDC; x,y,width,height,sx,sy,ex,ey : Integer): Boolean;
begin
Result := InterfaceObject.RadialArc(DC, x,y,width,height,sx,sy,ex,ey);
end;
function RadialPie(DC: HDC; x,y,width,height,sx,sy,ex,ey : Integer): Boolean;
begin
Result := InterfaceObject.RadialPie(DC, x,y,width,height,sx,sy,ex,ey);
end;
function RadialPieWithAngles(DC: HDC; X,Y,Width,Height,
Angle1,Angle2: Integer): Boolean;
begin
Result := InterfaceObject.RadialPieWithAngles(DC, X,Y,Width,Height,Angle1,Angle2);
end;
function RadioMenuItemGroup(hndMenu: HMENU; bRadio: Boolean): Boolean;
begin
Result := InterfaceObject.RadioMenuItemGroup(hndMenu,bRadio);
end;
function RegroupMenuItem(hndMenu: HMENU; GroupIndex: integer) : Boolean;
begin
Result := InterfaceObject.RegroupMenuItem(hndMenu,GroupIndex);
end;
function ReleaseDesignerDC(hWnd: HWND; DC: HDC): Integer;
begin
Result := InterfaceObject.ReleaseDesignerDC(hWnd, DC);
end;
function RequestInput(const InputCaption, InputPrompt : String; MaskInput : Boolean; var Value : String) : Boolean;
begin
Result := InterfaceObject.RequestInput(InputCaption, InputPrompt, MaskInput, Value);
end;
function RightJustifyMenuItem(HndMenu: HMenu;
bRightJustify: boolean): boolean;
begin
Result := InterfaceObject.RightJustifyMenuItem(hndMenu, bRightJustify);
end;
procedure SendCachedLCLMessages;
begin
end;
function SetCaretRespondToFocus(Handle: hWnd; ShowHideOnFocus: boolean):Boolean;
begin
Result := InterfaceObject.SetCaretRespondToFocus(Handle,ShowHideOnFocus);
end;
function SetComboMinDropDownSize(Handle: HWND;
MinItemsWidth, MinItemsHeight, MinItemCount: integer): boolean;
begin
Result := InterfaceObject.SetComboMinDropDownSize(Handle,
MinItemsWidth, MinItemsHeight, MinItemCount);
end;
function StretchMaskBlt(DestDC: HDC; X, Y, Width, Height: Integer;
SrcDC: HDC; XSrc, YSrc, SrcWidth, SrcHeight: Integer;
Mask: HBITMAP; XMask, YMask: Integer; Rop: DWORD): Boolean;
begin
Result := InterfaceObject.StretchMaskBlt(DestDC, X, Y, Width, Height,
SrcDC, XSrc, YSrc, SrcWidth, SrcHeight, Mask, XMask, YMask, Rop);
end;
//##apiwiz##eps## // Do not remove
{******************************************************************************
Platform independent stuff
******************************************************************************}
//##apiwiz##spi## // Do not remove
{------------------------------------------------------------------------------
Function: ExcludeClipRgn
Params: dc, RGN
Returns: integer
Subtracts all intersecting points of the passed Region from the Current
clipping region in the device context (dc).
The result can be one of the following constants
Error
NullRegion
SimpleRegion
ComplexRegion
------------------------------------------------------------------------------}
function ExcludeClipRgn(dc: hdc; rgn : hrgn) : Integer;
begin
Result := ExtSelectClipRGN(DC, RGN, RGN_DIFF);
end;
procedure NotifyUser(const DialogMessage : String; DialogType : longint);
begin
PromptUser(DialogMessage, DialogType, [idButtonOK], -1, -1);
end;
procedure NotifyUser(const DialogCaption, DialogMessage : String; DialogType : longint);
begin
PromptUser(DialogCaption, DialogMessage, DialogType, [idButtonOK], -1, -1);
end;
procedure NotifyUserAtXY(const DialogMessage : String; DialogType : longint; X, Y : Longint);
begin
PromptUserAtXY(DialogMessage, DialogType, [idButtonOK], -1, -1, X, Y);
end;
procedure NotifyUserAtXY(const DialogCaption, DialogMessage : String; DialogType : longint; X, Y : Longint);
begin
PromptUserAtXY(DialogCaption, DialogMessage, DialogType, [idButtonOK], -1, -1, X, Y);
end;
function PromptUser(const DialogMessage : String; DialogType : longint; Buttons : Array of Longint;
DefaultIndex, EscapeResult : Longint) : Longint;
begin
Result := PromptUser(DialogMessage, DialogType, @Buttons[Low(Buttons)],
High(Buttons) - Low(Buttons) + 1, DefaultIndex, EscapeResult);
end;
function PromptUser(const DialogCaption, DialogMessage : String; DialogType : longint; Buttons : Array of Longint;
DefaultIndex, EscapeResult : Longint) : Longint;
begin
Result := PromptUser(DialogCaption, DialogMessage, DialogType, @Buttons[Low(Buttons)],
High(Buttons) - Low(Buttons) + 1, DefaultIndex, EscapeResult);
end;
function PromptUserAtXY(const DialogMessage : String; DialogType : longint; Buttons : Array of Longint;
DefaultIndex, EscapeResult : Longint; X, Y : Longint) : Longint;
begin
Result := PromptUserAtXY(DialogMessage, DialogType, @Buttons[Low(Buttons)],
High(Buttons) - Low(Buttons) + 1, DefaultIndex, EscapeResult, X, Y);
end;
function PromptUserAtXY(const DialogCaption, DialogMessage : String; DialogType : longint; Buttons : Array of Longint;
DefaultIndex, EscapeResult : Longint; X, Y : Longint) : Longint;
begin
Result := PromptUserAtXY(DialogCaption, DialogMessage, DialogType, @Buttons[Low(Buttons)],
High(Buttons) - Low(Buttons) + 1, DefaultIndex, EscapeResult, X, Y);
end;
procedure RaiseLastOSError;
begin
writeln('ToDo: RaiseLastOSError');
RaiseGDBException('ToDo: RaiseLastOSError');
end;
//##apiwiz##epi## // Do not remove
{ =============================================================================
$Log$
Revision 1.1 2003/11/24 11:03:07 marc
* Splitted winapi*.inc into a winapi and a lcl interface communication part
}

146
lcl/include/lclintfh.inc Normal file
View File

@ -0,0 +1,146 @@
(******************************************************************************
All interface communication related stuff goes here.
This file is used by both LCLLinux and InterfaceBase
If a procedure is platform dependent then it should have the following tail:
{$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
If a procedure isn't platform dependent, it is no part of InterfaseBase and
should be surrounded by:
{$IFNDEF IF_BASE_MEMBER}
procedure MyProc;
{$ENDIF}
!! Keep this alphabetical and place a pointer to the independent part
!! if needed
*****************************************************************************
* *
* This file is part of the Lazarus Component Library (LCL) *
* *
* See the file COPYING.LCL, included in this distribution, *
* for details about the copyright. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* *
*****************************************************************************
******************************************************************************)
{******************************************************************************
Platform specific stuff
Note:
the IFNDEF IF_BASE_MEMBER section is at the end
******************************************************************************}
//##apiwiz##sps## // Do not remove
procedure AttachMenuToWindow(AMenuObject: TComponent); {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
procedure CallDefaultWndHandler(Sender: TObject; var Message); {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function CheckMenuItem(hndMenu: HMENU; uIDEnableItem: Integer; bChecked: Boolean): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function ClipboardFormatToMimeType(FormatID: TClipboardFormat): string; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function ClipboardGetData(ClipboardType: TClipboardType;
FormatID: TClipboardFormat; Stream: TStream): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
// ! ClipboardGetFormats: List will be created. You must free it yourself with FreeMem(List) !
function ClipboardGetFormats(ClipboardType: TClipboardType;
var Count: integer; var List: PClipboardFormat): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function ClipboardGetOwnerShip(ClipboardType: TClipboardType;
OnRequestProc: TClipboardRequestEvent; FormatCount: integer;
Formats: PClipboardFormat): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function ClipboardRegisterFormat(const AMimeType: string): TClipboardFormat; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function ComboBoxDropDown(Handle: HWND; DropDown: boolean): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function CreateBitmapFromRawImage(const RawImage: TRawImage; var Bitmap, MaskBitmap: HBitmap): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function CreateEmptyRegion: hRGN; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function CreatePixmapIndirect(const Data: Pointer; const TransColor: Longint): HBITMAP; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function CreateRegionCopy(SrcRGN: hRGN): hRGN; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function DCClipRegionValid(DC: HDC): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function EnableMenuItem(hndMenu: HMENU; uIDEnableItem: Integer; bEnable: Boolean): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetBitmapRawImageDescription(Bitmap: HBITMAP; Desc: PRawImageDescription): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetCaretRespondToFocus(handle: HWND; var ShowHideOnFocus: boolean): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetClientBounds(handle : HWND; var ARect: TRect) : Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetCmdLineParamDescForInterface: string; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetDesignerDC(WindowHandle: HWND): HDC; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetDeviceRawImageDescription(DC: HDC; Desc: PRawImageDescription): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetDeviceSize(DC: HDC; var p: TPoint): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetNotebookTabIndexAtPos(Handle: HWND; const ClientPos: TPoint): integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetRawImageFromDevice(SrcDC: HDC; const SrcRect: TRect; var NewRawImage: TRawImage): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetRawImageFromBitmap(SrcBitmap, SrcMaskBitmap: HBITMAP; const SrcRect: TRect; var NewRawImage: TRawImage): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetScrollBarSize(Handle: HWND; SBStyle: Integer): integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetScrollbarVisible(Handle: HWND; SBStyle: Integer): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetWindowRelativePosition(Handle : hwnd; var Left, Top: integer): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function Frame(DC: HDC; const ARect: TRect): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function Frame3d(DC: HDC; var ARect: TRect; const FrameWidth : integer;
const Style : TGraphicsBevelCut
): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function InvalidateFrame(aHandle : HWND; ARect : pRect; bErase : Boolean; BorderWidth: integer) : Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function LoadStockPixmap(StockID: longint) : HBitmap; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function MoveWindowOrgEx(dc : hdc; dX,dY : Integer): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function PairSplitterAddSide(SplitterHandle, SideHandle: hWnd; Side: integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function PairSplitterGetInterfaceInfo: boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function PairSplitterRemoveSide(SplitterHandle, SideHandle: hWnd; Side: integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function PairSplitterSetPosition(SplitterHandle: hWnd; var NewPosition: integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function PromptUser(const DialogCaption, DialogMessage : String; DialogType : longint; Buttons : PLongint; ButtonCount, DefaultIndex, EscapeResult : Longint) : Longint;{$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function PromptUserAtXY(const DialogCaption, DialogMessage : String; DialogType : longint; Buttons : PLongint; ButtonCount, DefaultIndex, EscapeResult : Longint; X, Y : Longint) : Longint;{$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function RadialArc(DC: HDC; x,y,width,height,sx,sy,ex,ey : Integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function RadialChord(DC: HDC; x,y,width,height,sx,sy,ex,ey : Integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function RadialPie(DC: HDC; x,y,width,height,sx,sy,ex,ey : Integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function RadialPieWithAngles(DC: HDC; X,Y,Width,Height,Angle1,Angle2: Integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function RadioMenuItemGroup(hndMenu: HMENU; bRadio: Boolean): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function RegroupMenuItem(hndMenu: HMENU; GroupIndex: integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function ReleaseDesignerDC(hWnd: HWND; DC: HDC): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function RequestInput(const InputCaption, InputPrompt : String; MaskInput : Boolean; var Value : String) : Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function RightJustifyMenuItem(HndMenu: HMenu; bRightJustify: boolean): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
procedure SendCachedLCLMessages; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function SetCaretRespondToFocus(handle: HWND; ShowHideOnFocus: boolean): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function SetComboMinDropDownSize(Handle: HWND; MinItemsWidth, MinItemsHeight, MinItemCount: integer): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function StretchMaskBlt(DestDC: HDC; X, Y, Width, Height: Integer; SrcDC: HDC; XSrc, YSrc, SrcWidth, SrcHeight: Integer; Mask: HBITMAP; XMask, YMask: Integer; Rop: DWORD): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
//##apiwiz##eps## // Do not remove
{******************************************************************************
Platform independent stuff
******************************************************************************}
{$IFNDEF IF_BASE_MEMBER}
//##apiwiz##spi## // Do not remove
function ExcludeClipRgn(dc: hdc; rgn : hrgn) : Integer;
procedure NotifyUser(const DialogMessage : String; DialogType : longint);
procedure NotifyUser(const DialogCaption, DialogMessage : String; DialogType : longint);
procedure NotifyUserAtXY(const DialogMessage : String; DialogType : longint; X, Y : Longint);
procedure NotifyUserAtXY(const DialogCaption, DialogMessage : String; DialogType : longint; X, Y : Longint);
function PromptUser(const DialogMessage : String; DialogType : longint; Buttons : Array of Longint; DefaultIndex, EscapeResult : Longint) : Longint;
function PromptUser(const DialogMessage : String; DialogType : longint; Buttons : PLongint; ButtonCount, DefaultIndex, EscapeResult : Longint) : Longint;
function PromptUser(const DialogCaption, DialogMessage : String; DialogType : longint; Buttons : Array of Longint; DefaultIndex, EscapeResult : Longint) : Longint;
function PromptUserAtXY(const DialogMessage : String; DialogType : longint; Buttons : Array of Longint; DefaultIndex, EscapeResult : Longint; X, Y : Longint) : Longint;
function PromptUserAtXY(const DialogMessage : String; DialogType : longint; Buttons : PLongint; ButtonCount, DefaultIndex, EscapeResult : Longint; X, Y : Longint) : Longint;
function PromptUserAtXY(const DialogCaption, DialogMessage : String; DialogType : longint; Buttons : Array of Longint; DefaultIndex, EscapeResult : Longint; X, Y : Longint) : Longint;
// should go to sysutils.pp
procedure RaiseLastOSError;
//##apiwiz##epi## // Do not remove
{$ENDIF}
{ =============================================================================
$Log$
Revision 1.1 2003/11/24 11:03:07 marc
* Splitted winapi*.inc into a winapi and a lcl interface communication part
}

View File

@ -629,9 +629,10 @@ begin
FChecked := AValue;
if AValue and FRadioItem then
TurnSiblingsOff;
if (FParent <> nil) and not (csReading in ComponentState)
and HandleAllocated then
CheckMenuItem(Handle, FCommand, FChecked);
if (FParent <> nil)
and not (csReading in ComponentState)
and HandleAllocated
then CheckMenuItem(Handle, FCommand, FChecked);
end;
end;
@ -659,8 +660,8 @@ procedure TMenuItem.SetEnabled(AValue: Boolean);
begin
if FEnabled <> AValue then begin
FEnabled := AValue;
if HandleAllocated and (Parent <> nil) then
EnableMenuItem(Handle, FCommand, FEnabled);
if HandleAllocated and (Parent <> nil)
then EnableMenuItem(Handle, FCommand, FEnabled);
MenuChanged(False);
end;
end;
@ -983,6 +984,9 @@ end;
{ =============================================================================
$Log$
Revision 1.41 2003/11/24 11:03:07 marc
* Splitted winapi*.inc into a winapi and a lcl interface communication part
Revision 1.40 2003/11/16 01:56:15 mattias
changed TMenuItem.Graphic to TMenuItem.Bitmap
@ -1131,6 +1135,9 @@ end;
$Log$
Revision 1.41 2003/11/24 11:03:07 marc
* Splitted winapi*.inc into a winapi and a lcl interface communication part
Revision 1.40 2003/11/16 01:56:15 mattias
changed TMenuItem.Graphic to TMenuItem.Bitmap

View File

@ -1,8 +1,6 @@
// included by lcllinux.pp
(******************************************************************************
All Winapi related stuff goes here.
This file is used by LCLLinux
This file is used by LCLIntf.pas
If a procedure is platform dependent then it should call:
InterfaceObject.MyDependentProc
@ -28,6 +26,8 @@
{******************************************************************************
These functions redirect to the platform specific interface object.
Note:
the section for not referring InterfaceObject is at the end
******************************************************************************}
//##apiwiz##sps## // Do not remove
@ -56,11 +56,6 @@ begin
Result := InterfaceObject.BringWindowToTop(hWnd);
end;
procedure CallDefaultWndHandler(Sender: TObject; var Message);
begin
InterfaceObject.CallDefaultWndHandler(Sender,Message);
end;
function CallNextHookEx(hhk : HHOOK; ncode : Integer; wParam, lParam : Longint) : Integer;
begin
Result := InterfaceObject.CallNExtHookEx(hhk,ncode,wparam,lParam);
@ -71,59 +66,16 @@ begin
Result := InterfaceObject.CallWindowProc(lpPrevWndFunc, Handle, Msg, wParam, lParam);
end;
function CheckMenuItem(hndMenu: HMENU; uIDEnableItem: Integer;
bChecked: Boolean): Boolean;
begin
Result := InterfaceObject.CheckMenuItem(hndMenu,uIDEnableItem,bChecked);
end;
Function ClienttoScreen(Handle : HWND; var P : TPoint) : Boolean;
Begin
Result := InterfaceObject.ClientToScreen(Handle, P);
end;
// the clipboard functions are internally used by TClipboard
function ClipboardFormatToMimeType(FormatID: TClipboardFormat): string;
begin
Result := InterfaceObject.ClipboardFormatToMimeType(FormatID);
end;
function ClipboardGetData(ClipboardType: TClipboardType;
FormatID: TClipboardFormat; Stream: TStream): boolean;
begin
Result := InterfaceObject.ClipboardGetData(ClipboardType, FormatID, Stream);
end;
// ! List will be created. You must free it yourself with FreeMem(List) !
function ClipboardGetFormats(ClipboardType: TClipboardType;
var Count: integer; var List: PClipboardFormat): boolean;
begin
Result := InterfaceObject.ClipboardGetFormats(ClipboardType,Count,List);
end;
function ClipboardGetOwnerShip(ClipboardType: TClipboardType;
OnRequestProc: TClipboardRequestEvent; FormatCount: integer;
Formats: PClipboardFormat): boolean;
begin
Result := InterfaceObject.ClipboardGetOwnerShip(ClipboardType, OnRequestProc,
FormatCount, Formats);
end;
function ClipboardRegisterFormat(const AMimeType: string): TClipboardFormat;
begin
Result := InterfaceObject.ClipboardRegisterFormat(AMimeType);
end;
Function CombineRgn(Dest, Src1, Src2 : HRGN; fnCombineMode : Longint) : Longint;
begin
Result := InterfaceObject.CombineRgn(Dest, Src1, Src2, fnCombineMode);
end;
function ComboBoxDropDown(Handle: HWND; DropDown: boolean): boolean;
begin
Result := InterfaceObject.ComboBoxDropDown(Handle,DropDown);
end;
function CreateBitmap(Width, Height: Integer; Planes, BitCount: Longint;
BitmapBits: Pointer): HBITMAP;
begin
@ -131,12 +83,6 @@ begin
BitmapBits);
end;
function CreateBitmapFromRawImage(const RawImage: TRawImage;
var Bitmap, MaskBitmap: HBitmap): boolean;
begin
Result := InterfaceObject.CreateBitmapFromRawImage(RawImage,Bitmap,MaskBitmap);
end;
function CreateDIBitmap(DC: HDC; var InfoHeader: TBitmapInfoHeader;
dwUsage: DWORD; InitBits: PChar; var InitInfo: TBitmapInfo;
wUsage: UINT): HBITMAP;
@ -145,6 +91,13 @@ begin
InitInfo,wUsage);
end;
function CreateDIBSection(DC: HDC; const BitmapInfo: tagBitmapInfo; Usage: UINT;
var Bits: Pointer; SectionHandle: THandle; Offset: DWORD): HBITMAP;
begin
Result := InterfaceObject.CreateDIBSection(DC,BitmapInfo,Usage,
Bits,SectionHandle,Offset);
end;
function CreateBrushIndirect(const LogBrush: TLogBrush): HBRUSH;
begin
Result := InterfaceObject.CreateBrushIndirect(LogBrush);
@ -186,11 +139,6 @@ begin
Result := InterfaceObject.CreatePenIndirect(LogPen);
end;
function CreatePixmapIndirect(const Data: Pointer; const TransColor: Longint): HBITMAP;
begin
Result := InterfaceObject.CreatePixmapIndirect(Data, TransColor);
end;
function CreatePolygonRgn(Points: PPoint; NumPts: Integer; FillMode: integer): HRGN;
Begin
Result := InterfaceObject.CreatePolygonRgn(Points, NumPts, FillMode);
@ -241,11 +189,6 @@ begin
Result := InterfaceObject.DPtoLP(DC,Points,Count);
end;
function EnableMenuItem(hndMenu: HMENU; uIDEnableItem: Integer; bEnable: Boolean): Boolean;
begin
Result := InterfaceObject.EnableMenuItem(hndMenu, uIDEnableItem, bEnable);
end;
function EnableScrollBar(Wnd: HWND; wSBflags, wArrows: Cardinal): Boolean;
begin
Result := InterfaceObject.EnableScrollBar(Wnd, wSBflags, wArrows);
@ -276,27 +219,6 @@ begin
Result := InterfaceObject.ExcludeClipRect(DC,Left,Top,Right,Bottom);
end;
{------------------------------------------------------------------------------
Function: ExcludeClipRgn
Params: dc, RGN
Returns: integer
Subtracts all intersecting points of the passed Region from the Current
clipping region in the device context (dc).
The result can be one of the following constants
Error
NullRegion
SimpleRegion
ComplexRegion
------------------------------------------------------------------------------}
function ExcludeClipRgn(dc: hdc; rgn : hrgn) : Integer;
begin
Result := ExtSelectClipRGN(DC, RGN, RGN_DIFF);
end;
function ExtTextOut(DC: HDC; X, Y: Integer; Options: Longint; Rect: PRect; Str: PChar; Count: Longint; Dx: PInteger): Boolean;
begin
Result := InterfaceObject.ExtTextOut(DC, X, Y, Options, Rect, Str, Count, Dx);
@ -324,17 +246,6 @@ begin
Result := InterfaceObject.FloodFill(DC,X,Y,Color,FillStyle,Brush);
end;
function Frame(DC: HDC; const ARect: TRect): Integer;
begin
Result:= InterfaceObject.Frame(DC, ARect);
end;
function Frame3d(DC : HDC; var ARect : TRect; const FrameWidth : integer;
const Style: TGraphicsBevelCut) : boolean;
begin
Result:= InterfaceObject.Frame3d(DC, ARect, FrameWidth, Style);
end;
function FrameRect(DC: HDC; const ARect: TRect; hBr: HBRUSH): Integer;
begin
Result:= InterfaceObject.FrameRect(DC, ARect, hBr);
@ -345,7 +256,12 @@ begin
Result := InterfaceObject.GetActiveWindow;
end;
Function GetCapture: HWND;
function GetBitmapBits(Bitmap: HBITMAP; Count: Longint; Bits: Pointer): Longint;
begin
Result := InterfaceObject.GetBitmapBits(Bitmap, Count, Bits);
end;
function GetCapture: HWND;
Begin
Result := InterfaceObject.GetCapture;
end;
@ -355,28 +271,6 @@ begin
Result := InterfaceObject.GetCaretPos(lpPoint);
end;
function GetCaretRespondToFocus(handle: HWND;
var ShowHideOnFocus: boolean): Boolean;
begin
Result := InterfaceObject.GetCaretRespondToFocus(handle,ShowHideOnFocus);
end;
{------------------------------------------------------------------------------
Function: GetClientBounds
Params: handle:
ARect:
Result:
Returns: true on success
Returns the client bounds of a control. The client bounds is the rectangle of
the inner area of a control, where the child controls are visible. The
coordinates are relative to the control's left and top.
------------------------------------------------------------------------------}
Function GetClientBounds(Handle: HWND; var ARect: TRect): Boolean;
begin
Result := InterfaceObject.GetClientBounds(Handle, ARect);
end;
{------------------------------------------------------------------------------
Function: GetClientRect
Params: handle:
@ -388,7 +282,7 @@ end;
child controls are visible.
A child control with Align=alClient will completely fill the clientrect.
------------------------------------------------------------------------------}
Function GetClientRect(handle : HWND; var Rect : TRect) : Boolean;
function GetClientRect(handle : HWND; var Rect : TRect) : Boolean;
begin
Result := InterfaceObject.GetClientRect(handle, Rect);
end;
@ -403,19 +297,6 @@ begin
Result := InterfaceObject.GetClipRGN(DC, RGN);
end;
{------------------------------------------------------------------------------
Function: GetCmdLineParamDescForInterface
Params: none
Returns: ansistring
Returns a description of the command line parameters, that are understood by
the interface.
------------------------------------------------------------------------------}
Function GetCmdLineParamDescForInterface: string;
begin
Result := InterfaceObject.GetCmdLineParamDescForInterface;
end;
Function GetCursorPos(var lpPoint:TPoint): Boolean;
Begin
Result := InterfaceObject.GetCursorPos(lpPoint);
@ -443,39 +324,6 @@ begin
Result := InterfaceObject.GetDeviceCaps(DC, Index);
end;
function GetDeviceRawImageDescription(DC: HDC;
Desc: PRawImageDescription): boolean;
begin
Result := InterfaceObject.GetDeviceRawImageDescription(DC,Desc);
end;
function GetDeviceSize(DC: HDC; var p: TPoint): boolean;
begin
Result := InterfaceObject.GetDeviceSize(DC,p);
end;
function GetDesignerDC(WindowHandle: HWND): HDC;
begin
Result := InterfaceObject.GetDesignerDC(WindowHandle);
end;
function GetBitmapBits(Bitmap: HBITMAP; Count: Longint; Bits: Pointer): Longint;
begin
Result := InterfaceObject.GetBitmapBits(Bitmap, Count, Bits);
end;
function GetBitmapRawImageDescription(Bitmap: HBITMAP;
Desc: PRawImageDescription): boolean;
begin
Result := InterfaceObject.GetBitmapRawImageDescription(Bitmap,Desc);
end;
function CreateDIBSection(DC: HDC; const BitmapInfo: tagBitmapInfo; Usage: UINT;
var Bits: Pointer; SectionHandle: THandle; Offset: DWORD): HBITMAP;
begin
Result := InterfaceObject.CreateDIBSection(DC,BitmapInfo,Usage,
Bits,SectionHandle,Offset);
end;
function GetFocus: HWND;
begin
@ -497,12 +345,6 @@ begin
Result := InterfaceObject.GetMapMode(DC);
end;
function GetNotebookTabIndexAtPos(Handle: HWND;
const ClientPos: TPoint): integer;
begin
Result := InterfaceObject.GetNotebookTabIndexAtPos(Handle,ClientPos);
end;
function GetObject(GDIObject: HGDIOBJ; BufSize: Integer; Buf: Pointer): Integer;
begin
Result := InterfaceObject.GetObject(GDIObject, BufSize, Buf);
@ -525,34 +367,11 @@ Begin
Result := InterfaceObject.GetProp(Handle,Str);
end;
function GetRawImageFromDevice(SrcDC: HDC; const SrcRect: TRect;
var NewRawImage: TRawImage): boolean;
begin
Result := InterfaceObject.GetRawImageFromDevice(SrcDC,SrcRect,NewRawImage);
end;
function GetRawImageFromBitmap(SrcBitmap, SrcMaskBitmap: HBITMAP;
const SrcRect: TRect; var NewRawImage: TRawImage): boolean;
begin
Result := InterfaceObject.GetRawImageFromBitmap(SrcBitmap,SrcMaskBitmap,
SrcRect,NewRawImage);
end;
Function GetRGNBox(RGN : HRGN; lpRect : PRect) : Longint;
begin
Result := InterfaceObject.GetRGNBox(RGN, lpRect);
end;
function GetScrollBarSize(Handle: HWND; SBStyle: Integer): integer;
begin
Result := InterfaceObject.GetScrollBarSize(Handle, SBStyle);
end;
function GetScrollbarVisible(Handle: HWND; SBStyle: Integer): boolean;
begin
Result := InterfaceObject.GetScrollbarVisible(Handle, SBStyle);
end;
function GetScrollInfo(Handle: HWND; SBStyle: Integer; var ScrollInfo: TScrollInfo): Boolean;
begin
Result := InterfaceObject.GetScrollInfo(Handle, SBStyle, ScrollInfo);
@ -626,18 +445,6 @@ begin
Result := InterfaceObject.GetWindowRect(Handle, Rect);
end;
{------------------------------------------------------------------------------
function GetWindowRelativePosition(Handle: hwnd;
var Left, Top: integer): boolean;
Returns the Left, Top, relative to the client origin of its parent.
------------------------------------------------------------------------------}
function GetWindowRelativePosition(Handle : hwnd;
var Left, Top: integer): boolean;
begin
Result := InterfaceObject.GetWindowRelativePosition(Handle,Left,Top);
end;
{------------------------------------------------------------------------------
Function GetWindowSize(Handle: hwnd; var Width, Height: integer): boolean;
@ -685,17 +492,6 @@ Begin
Result := InterfaceObject.IntersectClipRect(dc,Left,Top,Right,Bottom);
end;
{------------------------------------------------------------------------------
Function InvalidateFrame(aHandle : HWND; ARect : pRect; bErase : Boolean;
BorderWidth: integer) : Boolean;
Calls InvalidateRect for the borderframe.
------------------------------------------------------------------------------}
Function InvalidateFrame(aHandle : HWND; ARect : pRect; bErase : Boolean; BorderWidth: integer) : Boolean;
begin
Result := InterfaceObject.InvalidateFrame(aHandle,ARect,bErase,BorderWidth);
end;
Function InvalidateRect(aHandle : HWND; ARect : pRect; bErase : Boolean) : Boolean;
begin
Result := InterfaceObject.InvalidateRect(aHandle, ARect, bErase);
@ -726,11 +522,6 @@ begin
Result := InterfaceObject.LineTo(DC, X, Y);
end;
Function LoadStockPixmap(StockID: longint) : HBitmap;
begin
Result := InterfaceObject.LoadStockPixmap(StockID);
end;
function MaskBlt(DestDC: HDC; X, Y, Width, Height: Integer; SrcDC: HDC; XSrc, YSrc: Integer; Mask: HBITMAP; XMask, YMask: Integer): Boolean;
begin
Result := InterfaceObject.MaskBlt(DestDC, X, Y, Width, Height, SrcDC, XSrc, YSrc, Mask, XMask, YMask);
@ -751,35 +542,6 @@ begin
Result := InterfaceObject.MoveToEx(DC, X, Y, OldPoint);
end;
function MoveWindowOrgEx(dc : hdc; dX,dY : Integer): boolean;
begin
Result := InterfaceObject.MoveWindowOrgEx(DC, dX, dY);
end;
function PairSplitterAddSide(SplitterHandle, SideHandle: hWnd;
Side: integer): Boolean;
begin
Result:=InterfaceObject.PairSplitterAddSide(SplitterHandle,SideHandle,Side);
end;
function PairSplitterGetInterfaceInfo: boolean;
begin
Result:=InterfaceObject.PairSplitterGetInterfaceInfo;
end;
function PairSplitterRemoveSide(SplitterHandle, SideHandle: hWnd;
Side: integer): Boolean;
begin
Result:=InterfaceObject.PairSplitterRemoveSide(SplitterHandle,SideHandle,
Side);
end;
function PairSplitterSetPosition(SplitterHandle: hWnd;
var NewPosition: integer): Boolean;
begin
Result:=InterfaceObject.PairSplitterSetPosition(SplitterHandle,NewPosition);
end;
function PeekMessage(var lpMsg : TMsg; Handle : HWND;
wMsgFilterMin, wMsgFilterMax,wRemoveMsg : UINT): Boolean;
begin
@ -822,33 +584,6 @@ begin
Result := InterfaceObject.PtInRegion(RGN,X,Y);
end;
function RadialChord(DC: HDC; x,y,width,height,sx,sy,ex,ey : Integer): Boolean;
begin
Result := InterfaceObject.RadialChord(DC, x,y,width,height,sx,sy,ex,ey);
end;
function RadialArc(DC: HDC; x,y,width,height,sx,sy,ex,ey : Integer): Boolean;
begin
Result := InterfaceObject.RadialArc(DC, x,y,width,height,sx,sy,ex,ey);
end;
function RadialPie(DC: HDC; x,y,width,height,sx,sy,ex,ey : Integer): Boolean;
begin
Result := InterfaceObject.RadialPie(DC, x,y,width,height,sx,sy,ex,ey);
end;
function RadialPieWithAngles(DC: HDC; X,Y,Width,Height,
Angle1,Angle2: Integer): Boolean;
begin
Result := InterfaceObject.RadialPieWithAngles(DC,
X,Y,Width,Height,Angle1,Angle2);
end;
function RadioMenuItemGroup(hndMenu: HMENU; bRadio: Boolean): Boolean;
begin
Result := InterfaceObject.RadioMenuItemGroup(hndMenu,bRadio);
end;
function RealizePalette(DC: HDC): Cardinal;
begin
Result := InterfaceObject.RealizePalette(DC);
@ -864,11 +599,6 @@ begin
Result := InterfaceObject.RectVisible(dc,ARect);
end;
function RegroupMenuItem(hndMenu: HMENU; GroupIndex: integer) : Boolean;
begin
Result := InterfaceObject.RegroupMenuItem(hndMenu,GroupIndex);
end;
function ReleaseCapture: Boolean;
begin
Result := InterfaceObject.ReleaseCapture;
@ -879,94 +609,6 @@ begin
Result := InterfaceObject.ReleaseDC(hWnd, DC);
end;
function ReleaseDesignerDC(hWnd: HWND; DC: HDC): Integer;
begin
Result := InterfaceObject.ReleaseDesignerDC(hWnd, DC);
end;
Function RequestInput(const InputCaption, InputPrompt : String; MaskInput : Boolean; var Value : String) : Boolean;
begin
Result := InterfaceObject.RequestInput(InputCaption, InputPrompt, MaskInput, Value);
end;
Procedure NotifyUser(const DialogMessage : String; DialogType : longint);
begin
PromptUser(DialogMessage, DialogType, [idButtonOK], -1, -1);
end;
Procedure NotifyUserAtXY(const DialogMessage : String; DialogType : longint; X, Y : Longint);
begin
PromptUserAtXY(DialogMessage, DialogType, [idButtonOK], -1, -1, X, Y);
end;
Procedure NotifyUser(const DialogCaption, DialogMessage : String; DialogType : longint);
begin
PromptUser(DialogCaption, DialogMessage, DialogType, [idButtonOK], -1, -1);
end;
Procedure NotifyUserAtXY(const DialogCaption, DialogMessage : String; DialogType : longint; X, Y : Longint);
begin
PromptUserAtXY(DialogCaption, DialogMessage, DialogType, [idButtonOK], -1, -1, X, Y);
end;
Function PromptUser(const DialogMessage : String; DialogType : longint; Buttons : Array of Longint;
DefaultIndex, EscapeResult : Longint) : Longint;
begin
Result := PromptUser(DialogMessage, DialogType, @Buttons[Low(Buttons)],
High(Buttons) - Low(Buttons) + 1, DefaultIndex, EscapeResult);
end;
Function PromptUser(const DialogMessage : String; DialogType : longint; Buttons : PLongint;
ButtonCount, DefaultIndex, EscapeResult : Longint) : Longint;
begin
Result := InterfaceObject.PromptUser('', DialogMessage, DialogType, Buttons, ButtonCount, DefaultIndex, EscapeResult);
end;
Function PromptUser(const DialogCaption, DialogMessage : String; DialogType : longint; Buttons : Array of Longint;
DefaultIndex, EscapeResult : Longint) : Longint;
begin
Result := PromptUser(DialogCaption, DialogMessage, DialogType, @Buttons[Low(Buttons)],
High(Buttons) - Low(Buttons) + 1, DefaultIndex, EscapeResult);
end;
Function PromptUser(const DialogCaption, DialogMessage : String; DialogType : longint; Buttons : PLongint;
ButtonCount, DefaultIndex, EscapeResult : Longint) : Longint;
begin
Result := InterfaceObject.PromptUser(DialogCaption, DialogMessage, DialogType, Buttons, ButtonCount, DefaultIndex, EscapeResult);
end;
Function PromptUserAtXY(const DialogMessage : String; DialogType : longint; Buttons : Array of Longint;
DefaultIndex, EscapeResult : Longint; X, Y : Longint) : Longint;
begin
Result := PromptUserAtXY(DialogMessage, DialogType, @Buttons[Low(Buttons)],
High(Buttons) - Low(Buttons) + 1, DefaultIndex, EscapeResult, X, Y);
end;
Function PromptUserAtXY(const DialogMessage : String; DialogType : longint; Buttons : PLongint;
ButtonCount, DefaultIndex, EscapeResult : Longint; X, Y : Longint) : Longint;
begin
Result := InterfaceObject.PromptUserAtXY('', DialogMessage, DialogType, Buttons, ButtonCount, DefaultIndex, EscapeResult, X, Y);
end;
Function PromptUserAtXY(const DialogCaption, DialogMessage : String; DialogType : longint; Buttons : Array of Longint;
DefaultIndex, EscapeResult : Longint; X, Y : Longint) : Longint;
begin
Result := PromptUserAtXY(DialogCaption, DialogMessage, DialogType, @Buttons[Low(Buttons)],
High(Buttons) - Low(Buttons) + 1, DefaultIndex, EscapeResult, X, Y);
end;
Function PromptUserAtXY(const DialogCaption, DialogMessage : String; DialogType : longint; Buttons : PLongint;
ButtonCount, DefaultIndex, EscapeResult : Longint; X, Y : Longint) : Longint;
begin
Result := InterfaceObject.PromptUserAtXY(DialogCaption, DialogMessage, DialogType, Buttons, ButtonCount, DefaultIndex, EscapeResult, X, Y);
end;
function RightJustifyMenuItem(HndMenu: HMenu;
bRightJustify: boolean): boolean;
begin
Result := InterfaceObject.RightJustifyMenuItem(hndMenu, bRightJustify);
end;
Function RoundRect(DC : hDC; X1, Y1, X2, Y2: Integer; RX,RY : Integer): Boolean;
begin
Result := InterfaceObject.RoundRect(DC, X1, Y1, X2, Y2, RX, RY);
@ -992,11 +634,6 @@ begin
Result := InterfaceObject.ScrollWindowEx(hWnd, dx, dy, prcScroll, prcClip, hrgnUpdate, prcUpdate, flags);
end;
procedure SendCachedLCLMessages;
begin
end;
function SendMessage(HandleWnd: HWND; Msg: Cardinal; wParam: LongInt; lParam: LongInt): Integer;
begin
Result := InterfaceObject.SendMessage(HandleWnd, Msg, wParam, lParam);
@ -1017,13 +654,6 @@ begin
Result := InterfaceObject.SetBkMode(DC, bkMode);
end;
Function SetComboMinDropDownSize(Handle: HWND;
MinItemsWidth, MinItemsHeight, MinItemCount: integer): boolean;
begin
Result := InterfaceObject.SetComboMinDropDownSize(Handle,
MinItemsWidth, MinItemsHeight, MinItemCount);
end;
Function SetCapture(value : Longint): Longint;
Begin
Result := InterfaceObject.SetCapture(Value);
@ -1039,11 +669,6 @@ begin
Result := InterfaceObject.SetCaretPosEx(Handle, X, Y);
end;
function SetCaretRespondToFocus(Handle: hWnd; ShowHideOnFocus: boolean):Boolean;
begin
Result := InterfaceObject.SetCaretRespondToFocus(Handle,ShowHideOnFocus);
end;
function SetCursor(hCursor: HICON): HCURSOR;
begin
Result := InterfaceObject.SetCursor(hCursor);
@ -1163,14 +788,6 @@ begin
SrcX,SrcY,SrcWidth,SrcHeight,Bits,BitsInfo,Usage,Rop);
end;
function StretchMaskBlt(DestDC: HDC; X, Y, Width, Height: Integer;
SrcDC: HDC; XSrc, YSrc, SrcWidth, SrcHeight: Integer;
Mask: HBITMAP; XMask, YMask: Integer; Rop: DWORD): Boolean;
begin
Result := InterfaceObject.StretchMaskBlt(DestDC, X, Y, Width, Height,
SrcDC, XSrc, YSrc, SrcWidth, SrcHeight, Mask, XMask, YMask, Rop);
end;
function TextOut(DC: HDC; X,Y : Integer; Str : Pchar; Count: Integer) : Boolean;
begin
Result := InterfaceObject.TextOut(DC, X, Y, Str, Count);
@ -1349,6 +966,21 @@ begin
Result := Info.nPos;
end;
function GetRValue(RGB : DWORD) : BYTE;
begin
Result := RGB and $ff;
end;
function GetGValue(RGB : DWORD) : BYTE;
begin
Result := (RGB shr 8) and $ff;
end;
function GetBValue(RGB : DWORD) : BYTE;
begin
Result := (RGB shr 16) and $ff;
end;
{------------------------------------------------------------------------------
Function: GetScrollRange
Params: Handle, nBar, lpMinPos, lpMaxPos
@ -1532,6 +1164,22 @@ Begin
);
end;
{------------------------------------------------------------------------------
Function: RGB
Params: R: Red color
G: Green Color
B: Blue Color
Returns: The return value is the resultant RGB color
The RGB macro selects a red, green, blue (RGB) color based on the arguments
supplied and the color capabilities of the output device.
------------------------------------------------------------------------------}
function RGB(R, G, B : Byte) : TColorRef;
begin
Result := R or (G shl 8) or (B Shl 16);
end;
{------------------------------------------------------------------------------
Function: ScrollWindow In progress pbd
Params: Handle
@ -1644,59 +1292,14 @@ begin
DestRect.Bottom := Max(SrcRect1.Bottom, SrcRect2.Bottom);
end;
Function GetRValue(RGB : DWORD) : BYTE;
begin
Result := RGB and $ff;
end;
Function GetGValue(RGB : DWORD) : BYTE;
begin
Result := (RGB shr 8) and $ff;
end;
Function GetBValue(RGB : DWORD) : BYTE;
begin
Result := (RGB shr 16) and $ff;
end;
Function RGB(R, G, B : Byte) : TColorRef;
begin
Result := R or (G shl 8) or (B Shl 16);
end;
Procedure InitializeCriticalSection(var CritSection: TRTLCriticalSection);
begin
writeln('InitializeCriticalSection(TRTLCriticalSection) Not implemented yet');
end;
Procedure EnterCriticalSection(var CritSection: TRTLCriticalSection);
begin
writeln('EnterCriticalSection(TRTLCriticalSection) Not implemented yet');
end;
Procedure LeaveCriticalSection(var CritSection: TRTLCriticalSection);
begin
writeln('LeaveCriticalSection(TRTLCriticalSection) Not implemented yet');
end;
Procedure DeleteCriticalSection(var CritSection: TRTLCriticalSection);
begin
writeln('DeleteCriticalSection(TRTLCriticalSection) Not implemented yet');
end;
procedure RaiseLastOSError;
begin
writeln('ToDo: RaiseLastOSError');
RaiseGDBException('ToDo: RaiseLastOSError');
end;
//##apiwiz##epi## // Do not remove
// included by lcllinux.pp
{ =============================================================================
$Log$
Revision 1.104 2003/11/24 11:03:07 marc
* Splitted winapi*.inc into a winapi and a lcl interface communication part
Revision 1.103 2003/11/14 21:17:59 micha
new maskblt method for transparency blitting

View File

@ -1,6 +1,6 @@
(******************************************************************************
All Winapi related stuff goes here.
This file is used by both LCLLinux and InterfaceBase
This file is used by both LCLIntf.pas and InterfaceBase.pp
If a procedure is platform dependent then it should have the following tail:
{$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
If a procedure isn't platform dependent, it is no part of InterfaseBase and
@ -29,6 +29,9 @@
{******************************************************************************
Platform specific stuff
Note:
the IFNDEF IF_BASE_MEMBER section is at the end
******************************************************************************}
//##apiwiz##sps## // Do not remove
@ -39,30 +42,12 @@ Function BeginPaint(Handle : hwnd; var PS : TPaintStruct): hdc; {$IFDEF IF_BASE_
function BitBlt(DestDC: HDC; X, Y, Width, Height: Integer; SrcDC: HDC; XSrc, YSrc: Integer; Rop: DWORD): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function BringWindowToTop(hWnd : HWND): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
procedure CallDefaultWndHandler(Sender: TObject; var Message); {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function CallNextHookEx(hhk : HHOOK; ncode : Integer; wParam, lParam : Longint) : Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function CallWindowProc(lpPrevWndFunc : TFarProc; Handle : HWND; Msg : UINT; wParam ,lParam : LongInt) : Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function CallWindowProc(lpPrevWndFunc : TFarProc; Handle : HWND; Msg : UINT; wParam ,lParam : LongInt) : Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
//function CharLowerBuff --> independent
function CheckMenuItem(hndMenu: HMENU; uIDEnableItem: Integer;
bChecked: Boolean): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function ClienttoScreen(Handle : HWND; var P : TPoint) : Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
// the clipboard functions are internally used by TClipboard
function ClipboardFormatToMimeType(FormatID: TClipboardFormat): string; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function ClipboardGetData(ClipboardType: TClipboardType;
FormatID: TClipboardFormat; Stream: TStream): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
// ! ClipboardGetFormats: List will be created. You must free it yourself with FreeMem(List) !
function ClipboardGetFormats(ClipboardType: TClipboardType;
var Count: integer; var List: PClipboardFormat): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function ClipboardGetOwnerShip(ClipboardType: TClipboardType;
OnRequestProc: TClipboardRequestEvent; FormatCount: integer;
Formats: PClipboardFormat): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function ClipboardRegisterFormat(const AMimeType: string): TClipboardFormat; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function CombineRgn(Dest, Src1, Src2 : HRGN; fnCombineMode : Longint) : Longint; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function ComboBoxDropDown(Handle: HWND; DropDown: boolean): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function ClienttoScreen(Handle : HWND; var P : TPoint) : Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function CombineRgn(Dest, Src1, Src2 : HRGN; fnCombineMode : Longint) : Longint; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function CreateBitmap(Width, Height: Integer; Planes, BitCount: Longint; BitmapBits: Pointer): HBITMAP; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function CreateBitmapFromRawImage(const RawImage: TRawImage; var Bitmap, MaskBitmap: HBitmap): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function CreateBrushIndirect(const LogBrush: TLogBrush): HBRUSH; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function CreateCaret(Handle: HWND; Bitmap: hBitmap; width, Height: Integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function CreateCompatibleBitmap(DC: HDC; Width, Height: Integer): HBITMAP; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
@ -80,30 +65,27 @@ function CreateFontIndirectEx(const LogFont: TLogFont; const LongFontName: strin
function CreatePalette(const LogPalette: TLogPalette): HPalette; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
//function CreatePen --> independent
function CreatePenIndirect(const LogPen: TLogPen): HPEN; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function CreatePixmapIndirect(const Data: Pointer; const TransColor: Longint): HBITMAP; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function CreatePolygonRgn(Points: PPoint; NumPts: Integer; FillMode: integer): HRGN; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function CreateRectRgn(X1,Y1,X2,Y2 : Integer): HRGN; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
//function CreateRectRgnIndirect --> independent
Procedure DeleteCriticalSection(var CritSection: TCriticalSection); {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
procedure DeleteCriticalSection(var CritSection: TCriticalSection); {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function DeleteDC(hDC: HDC): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function DeleteObject(GDIObject: HGDIOBJ): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function DestroyCaret(Handle : HWND): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function DPtoLP(DC: HDC; var Points; Count: Integer): BOOL; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function DrawFrameControl(DC: HDC; var Rect : TRect; uType, uState : Cardinal) : Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function DrawFrameControl(DC: HDC; var Rect : TRect; uType, uState : Cardinal) : Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function DrawEdge(DC: HDC; var Rect: TRect; edge: Cardinal; grfFlags: Cardinal): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function DrawText(DC: HDC; Str: PChar; Count: Integer; var Rect: TRect; Flags: Cardinal): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function EnableMenuItem(hndMenu: HMENU; uIDEnableItem: Integer; bEnable: Boolean): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function EnableScrollBar(Wnd: HWND; wSBflags, wArrows: Cardinal): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function EnableWindow(hWnd: HWND; bEnable: Boolean): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function EndPaint(Handle : hwnd; var PS : TPaintStruct): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Procedure EnterCriticalSection(var CritSection: TCriticalSection); {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function EndPaint(Handle : hwnd; var PS : TPaintStruct): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
procedure EnterCriticalSection(var CritSection: TCriticalSection); {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function Ellipse(DC: HDC; x1, y1, x2, y2: Integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
//function EqualRect --> independent
Function ExcludeClipRect(dc: hdc; Left, Top, Right, Bottom : Integer) : Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
{$IFNDEF IF_BASE_MEMBER} function ExcludeClipRgn(dc: hdc; rgn : hrgn) : Integer; {$ENDIF}
function ExtTextOut(DC: HDC; X, Y: Integer; Options: Longint; Rect: PRect; Str: PChar; Count: Longint; Dx: PInteger): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function ExtSelectClipRGN(dc: hdc; rgn : hrgn; Mode : Longint) : Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
@ -113,46 +95,30 @@ function FloodFill(DC: HDC; X, Y: Integer;
Color: TGraphicsColor;
FillStyle: TGraphicsFillStyle;
Brush: HBRUSH): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function Frame(DC: HDC; const ARect: TRect): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function Frame3d(DC: HDC; var ARect: TRect; const FrameWidth : integer;
const Style : TGraphicsBevelCut
): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function FrameRect(DC: HDC; const ARect: TRect; hBr: HBRUSH): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function GetActiveWindow : HWND; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetBitmapBits(Bitmap: HBITMAP; Count: Longint; Bits: Pointer): Longint; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetBitmapRawImageDescription(Bitmap: HBITMAP; Desc: PRawImageDescription): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetCapture : HWND; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetCaretPos(var lpPoint: TPoint): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetCaretRespondToFocus(handle: HWND; var ShowHideOnFocus: boolean): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function GetClientBounds(handle : HWND; var ARect: TRect) : Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function GetClientRect(handle : HWND; var Rect: TRect) : Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function GetClipBox(DC : hDC; lpRect : PRect) : Longint; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function GetClipRGN(DC : hDC; RGN : hRGN) : Longint; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function GetCmdLineParamDescForInterface: string; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetClientRect(handle : HWND; var Rect: TRect) : Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetClipBox(DC : hDC; lpRect : PRect) : Longint; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetClipRGN(DC : hDC; RGN : hRGN) : Longint; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetCursorPos(var lpPoint: TPoint): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetCharABCWidths(DC: HDC; p2, p3: UINT; const ABCStructs): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF} //pbd
function GetDC(hWnd: HWND): HDC; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetDeviceCaps(DC: HDC; Index: Integer): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetDeviceRawImageDescription(DC: HDC; Desc: PRawImageDescription): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetDeviceSize(DC: HDC; var p: TPoint): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetDesignerDC(WindowHandle: HWND): HDC; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetDIBits(DC: HDC; Bitmap: HBitmap; StartScan, NumScans: UINT; Bits: Pointer; var BitInfo: BitmapInfo; Usage: UINT): Integer;{$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetFocus: HWND; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetFontLanguageInfo(DC: HDC): DWord; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetKeyState(nVirtKey: Integer): Smallint; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetMapMode(DC: HDC): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetNotebookTabIndexAtPos(Handle: HWND; const ClientPos: TPoint): integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetObject(GDIObject: HGDIOBJ; BufSize: Integer; Buf: Pointer): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetPaletteEntries(Palette: HPALETTE; StartIndex, NumEntries: UINT;
var PaletteEntries): UINT; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function GetParent(Handle : HWND): HWND; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function GetProp(Handle : hwnd; Str : PChar): Pointer;{$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetRawImageFromDevice(SrcDC: HDC; const SrcRect: TRect; var NewRawImage: TRawImage): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetRawImageFromBitmap(SrcBitmap, SrcMaskBitmap: HBITMAP; const SrcRect: TRect; var NewRawImage: TRawImage): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function GetRgnBox(RGN : HRGN; lpRect : PRect) : Longint; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetScrollBarSize(Handle: HWND; SBStyle: Integer): integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetScrollbarVisible(Handle: HWND; SBStyle: Integer): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetScrollInfo(Handle: HWND; SBStyle: Integer; var ScrollInfo: TScrollInfo): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
//function GetScrollPos --> independent
//function GetScrollRange --> independent
@ -168,7 +134,6 @@ function GetTextExtentPoint32(DC: HDC; Str: PChar; Count: Integer; var Size: TSi
function GetTextMetrics(DC: HDC; var TM: TTextMetric): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetWindowLong(Handle : hwnd; int : Integer): Longint; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetWindowRect(Handle : hwnd; var Rect : TRect): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetWindowRelativePosition(Handle : hwnd; var Left, Top: integer): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetWindowSize(Handle : hwnd; var Width, Height: integer): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetWindowOrgEx(dc : hdc; P : PPoint): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GradientFill(DC: HDC; Vertices: PTriVertex; NumVertices : Longint;
@ -180,7 +145,6 @@ function HideCaret(hWnd: HWND): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Procedure InitializeCriticalSection(var CritSection: TCriticalSection); {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function IntersectClipRect(dc: hdc; Left, Top, Right,Bottom: Integer): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
//function IntersectRect --> independent
Function InvalidateFrame(aHandle : HWND; ARect : pRect; bErase : Boolean; BorderWidth: integer) : Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function InvalidateRect(aHandle : HWND; ARect : pRect; bErase : Boolean) : Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
//function IsCharAlphaNumeric --> independent
function IsDBCSLeadByte(TestChar: Byte): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
@ -189,28 +153,14 @@ function IsWindowVisible(handle: HWND): boolean; {$IFDEF IF_BASE_MEMBER}virtual;
Procedure LeaveCriticalSection(var CritSection: TCriticalSection); {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function LineTo(DC: HDC; X, Y: Integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function LoadStockPixmap(StockID: longint) : HBitmap; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function MaskBlt(DestDC: HDC; X, Y, Width, Height: Integer; SrcDC: HDC; XSrc, YSrc: Integer; Mask: HBITMAP; XMask, YMask: Integer; Rop: DWORD): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function MaskBlt(DestDC: HDC; X, Y, Width, Height: Integer; SrcDC: HDC; XSrc, YSrc: Integer; Mask: HBITMAP; XMask, YMask: Integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function MessageBox(hWnd: HWND; lpText, lpCaption: PChar; uType: Cardinal): integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function MoveToEx(DC: HDC; X, Y: Integer; OldPoint: PPoint): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function MoveWindowOrgEx(dc : hdc; dX,dY : Integer): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
{$IFNDEF IF_BASE_MEMBER}
Procedure NotifyUser(const DialogMessage : String; DialogType : longint);
Procedure NotifyUserAtXY(const DialogMessage : String; DialogType : longint; X, Y : Longint);
Procedure NotifyUser(const DialogCaption, DialogMessage : String; DialogType : longint);
Procedure NotifyUserAtXY(const DialogCaption, DialogMessage : String; DialogType : longint; X, Y : Longint);
{$ENDIF}
//function OffsetRect --> independent
function PairSplitterAddSide(SplitterHandle, SideHandle: hWnd; Side: integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function PairSplitterGetInterfaceInfo: boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function PairSplitterRemoveSide(SplitterHandle, SideHandle: hWnd; Side: integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function PairSplitterSetPosition(SplitterHandle: hWnd; var NewPosition: integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function PeekMessage(var lpMsg : TMsg; Handle : HWND; wMsgFilterMin, wMsgFilterMax,wRemoveMsg : UINT): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function Pie(DC: HDC; EllipseX1,EllipseY1,EllipseX2,EllipseY2,
StartX,StartY,EndX,EndY: Integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
@ -221,36 +171,12 @@ function PostMessage(Handle: HWND; Msg: Cardinal; wParam: LongInt; lParam: LongI
Function PtInRegion(RGN: HRGN; X, Y: Integer) : Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
//function PtInRect --> independent
{$IFNDEF IF_BASE_MEMBER}
Function PromptUser(const DialogMessage : String; DialogType : longint; Buttons : Array of Longint; DefaultIndex, EscapeResult : Longint) : Longint;
Function PromptUserAtXY(const DialogMessage : String; DialogType : longint; Buttons : Array of Longint; DefaultIndex, EscapeResult : Longint; X, Y : Longint) : Longint;
Function PromptUser(const DialogMessage : String; DialogType : longint; Buttons : PLongint; ButtonCount, DefaultIndex, EscapeResult : Longint) : Longint;
Function PromptUserAtXY(const DialogMessage : String; DialogType : longint; Buttons : PLongint; ButtonCount, DefaultIndex, EscapeResult : Longint; X, Y : Longint) : Longint;
Function PromptUser(const DialogCaption, DialogMessage : String; DialogType : longint; Buttons : Array of Longint; DefaultIndex, EscapeResult : Longint) : Longint;
Function PromptUserAtXY(const DialogCaption, DialogMessage : String; DialogType : longint; Buttons : Array of Longint; DefaultIndex, EscapeResult : Longint; X, Y : Longint) : Longint;
{$EndIf}
Function PromptUser(const DialogCaption, DialogMessage : String; DialogType : longint; Buttons : PLongint; ButtonCount, DefaultIndex, EscapeResult : Longint) : Longint;{$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function PromptUserAtXY(const DialogCaption, DialogMessage : String; DialogType : longint; Buttons : PLongint; ButtonCount, DefaultIndex, EscapeResult : Longint; X, Y : Longint) : Longint;{$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function RequestInput(const InputCaption, InputPrompt : String; MaskInput : Boolean; var Value : String) : Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function RadialArc(DC: HDC; x,y,width,height,sx,sy,ex,ey : Integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function RadialChord(DC: HDC; x,y,width,height,sx,sy,ex,ey : Integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function RadialPie(DC: HDC; x,y,width,height,sx,sy,ex,ey : Integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function RadialPieWithAngles(DC: HDC; X,Y,Width,Height,Angle1,Angle2: Integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function RadioMenuItemGroup(hndMenu: HMENU; bRadio: Boolean): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function RealizePalette(DC: HDC): Cardinal; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function Rectangle(DC: HDC; X1, Y1, X2, Y2: Integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function RectVisible(dc : hdc; const ARect: TRect) : Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function RegroupMenuItem(hndMenu: HMENU; GroupIndex: integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function ReleaseCapture : Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function ReleaseDC(hWnd: HWND; DC: HDC): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function ReleaseDesignerDC(hWnd: HWND; DC: HDC): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function RestoreDC(DC: HDC; SavedDC: Integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function RightJustifyMenuItem(HndMenu: HMenu; bRightJustify: boolean): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function RoundRect(DC : hDC; X1, Y1, X2, Y2: Integer; RX,RY : Integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function SaveDC(DC: HDC): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
@ -260,16 +186,13 @@ function ScrollWindowEx(hWnd: HWND; dx, dy: Integer; prcScroll, prcClip: PRect;
Function SelectClipRGN(DC : hDC; RGN : HRGN) : Longint; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function SelectObject(DC: HDC; GDIObj: HGDIOBJ): HGDIOBJ; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function SelectPalette(DC: HDC; Palette: HPALETTE; ForceBackground: Boolean): HPALETTE; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
procedure SendCachedLCLMessages; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function SendMessage(HandleWnd: HWND; Msg: Cardinal; wParam: LongInt; lParam: LongInt): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function SetActiveWindow(Handle: HWND): HWND; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function SetBkColor(DC: HDC; Color: TColorRef): TColorRef; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF} //pbd
Function SetBkMode(DC: HDC; bkMode : Integer): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function SetComboMinDropDownSize(Handle: HWND; MinItemsWidth, MinItemsHeight, MinItemCount: integer): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function SetCapture (Value : LongInt): LongInt; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function SetCaretPos(X, Y: Integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function SetCaretPosEx(handle: HWnd; X, Y: Integer): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function SetCaretRespondToFocus(handle: HWND; ShowHideOnFocus: boolean): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function SetCursor(hCursor: HICON): HCURSOR; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function SetFocus(hWnd: HWND): HWND; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function SetMapMode(DC: HDC; MapMode: Integer): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
@ -296,7 +219,6 @@ function StretchBlt(DestDC: HDC; X, Y, Width, Height: Integer; SrcDC: HDC; XSrc,
function StretchDIBits(DC: HDC; DestX, DestY, DestWidth, DestHeight, SrcX,
SrcY, SrcWidth, SrcHeight: Integer; Bits: Pointer; var BitsInfo: TBitmapInfo;
Usage: UINT; Rop: DWORD): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function StretchMaskBlt(DestDC: HDC; X, Y, Width, Height: Integer; SrcDC: HDC; XSrc, YSrc, SrcWidth, SrcHeight: Integer; Mask: HBITMAP; XMask, YMask: Integer; Rop: DWORD): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Function TextOut(DC: HDC; X,Y : Integer; Str : Pchar; Count: Integer) : Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
@ -314,36 +236,12 @@ Function WindowFromPoint(Point : TPoint) : HWND; {$IFDEF IF_BASE_MEMBER}virtual;
{$IFNDEF IF_BASE_MEMBER}
const
{ Ternary raster operations }
SRCCOPY = $00CC0020; { dest = source }
SRCPAINT = $00EE0086; { dest = source OR dest }
SRCAND = $008800C6; { dest = source AND dest }
SRCINVERT = $00660046; { dest = source XOR dest }
SRCERASE = $00440328; { dest = source AND (NOT dest ) }
NOTSRCCOPY = $00330008; { dest = (NOT source) }
NOTSRCERASE = $001100A6; { dest = (NOT src) AND (NOT dest) }
MERGECOPY = $00C000CA; { dest = (source AND pattern) }
MERGEPAINT = $00BB0226; { dest = (NOT source) OR dest }
PATCOPY = $00F00021; { dest = pattern }
PATPAINT = $00FB0A09; { dest = DPSnoo }
PATINVERT = $005A0049; { dest = pattern XOR dest }
DSTINVERT = $00550009; { dest = (NOT dest) }
BLACKNESS = $00000042; { dest = BLACK }
WHITENESS = $00FF0062; { dest = WHITE }
type
WPARAM = longint;
LPARAM = LongInt;
LRESULT = LongInt;
//##apiwiz##spi## // Do not remove
function AdjustWindowRectEx(Var Rect: TRect; Style1: Word; MenuExist : Boolean;
Style2 : Word) : Boolean;
Function CharLowerBuff(pStr : PChar; Len : Integer): Integer;
function CharLowerBuff(pStr : PChar; Len : Integer): Integer;
function CopyRect(var DestRect: TRect; const SrcRect: TRect): Boolean;
function CreateEllipticRgnIndirect(const ARect: TRect): HRGN;
function CreateFont(Height, Width, Escapement, Orientation, Weight: Integer;
@ -362,14 +260,14 @@ function IntersectRect(var DestRect: TRect; const SrcRect1, SrcRect2: TRect): Bo
Function IsCharAlphaNumeric(c : Char) : Boolean;
function IsRectEmpty(const ARect: TRect): Boolean;
function OffSetRect(var Rect: TRect; dx,dy: Integer): Boolean;
function MakeWParam(l, h: Word): WPARAM;
function MakeLParam(l, h: Word): LPARAM;
function MakeLResult(l, h: Word): LRESULT;
Function PtInRect(Rect : TRect; Point : TPoint) : Boolean;
Function PointToSmallPoint(const P : TPoint) : TSmallPoint;
function OffSetRect(var Rect: TRect; dx,dy: Integer): Boolean;
function PtInRect(Rect : TRect; Point : TPoint) : Boolean;
function PointToSmallPoint(const P : TPoint) : TSmallPoint;
function ScrollWindow(hWnd: HWND; XAmount, YAmount: Integer; Rect, ClipRect: PRect): Boolean;
function SetRect(Var ARect : TRect; xLeft,yTop,xRight,yBottom : Integer) : Boolean;
@ -380,27 +278,23 @@ Function SmallPointToPoint(const P : TSmallPoint) : Tpoint;
function UnionRect(var DestRect: TRect; const SrcRect1, SrcRect2: TRect): Boolean; //pbd
Function GetRValue(RGB : DWORD) : BYTE;
Function GetGValue(RGB : DWORD) : BYTE;
Function GetBValue(RGB : DWORD) : BYTE;
function GetRValue(RGB : DWORD) : BYTE;
function GetGValue(RGB : DWORD) : BYTE;
function GetBValue(RGB : DWORD) : BYTE;
Function RGB(R, G, B : Byte) : TColorRef;
function RGB(R, G, B : Byte) : TColorRef;
//##apiwiz##epi## // Do not remove
Procedure InitializeCriticalSection(var CritSection: TRTLCriticalSection);
Procedure EnterCriticalSection(var CritSection: TRTLCriticalSection);
Procedure LeaveCriticalSection(var CritSection: TRTLCriticalSection);
Procedure DeleteCriticalSection(var CritSection: TRTLCriticalSection);
// should go to sysutils.pp
procedure RaiseLastOSError;
{$ENDIF}
{ =============================================================================
$Log$
Revision 1.94 2003/11/24 11:03:07 marc
* Splitted winapi*.inc into a winapi and a lcl interface communication part
Revision 1.93 2003/11/14 21:17:59 micha
new maskblt method for transparency blitting

View File

@ -40,12 +40,9 @@ type
{ TInterfaceBase }
TInterfaceBase = Class(TObject)
TInterfaceBase = class(TObject)
protected
procedure PassCmdLineOptions; virtual;
function CreateRegionCopy(SrcRGN: hRGN): hRGN; virtual;
function DCClipRegionValid(DC: HDC): boolean; virtual;
function CreateEmptyRegion: hRGN; virtual;
public
constructor Create;
destructor Destroy; override;
@ -53,7 +50,6 @@ type
procedure WaitMessage; virtual; abstract;
procedure AppInit; virtual; abstract;
procedure AppTerminate; virtual; abstract;
procedure AttachMenuToWindow(AMenuObject: TComponent); virtual;
function IntSendMessage3(LM_Message: Integer; Sender: TObject; Data: pointer): integer; virtual; abstract;
function CreateTimer(Interval: integer; TimerFunc: TFNTimerProc): integer; virtual; abstract;
@ -61,6 +57,7 @@ type
{$DEFINE IF_BASE_MEMBER}
{$I winapih.inc}
{$I lclintfh.inc}
{$UNDEF IF_BASE_MEMBER}
end;
@ -97,6 +94,8 @@ implementation
uses Math;
{$I interfacebase.inc}
{$I intfbasewinapi.inc}
{$I intfbaselcl.inc}
initialization
InputDialogFunction:=nil;
@ -109,6 +108,9 @@ end.
{
$Log$
Revision 1.35 2003/11/24 11:03:07 marc
* Splitted winapi*.inc into a winapi and a lcl interface communication part
Revision 1.34 2003/10/28 14:25:37 mattias
fixed unit circle

View File

@ -293,6 +293,7 @@ type
function DestroyTimer(TimerHandle: integer) : boolean; override;
{$I gtkwinapih.inc}
{$I gtklclintfh.inc}
public
property RCFilename: string read FRCFilename write SetRCFilename;
@ -310,6 +311,7 @@ uses
{$I gtklistsl.inc}
{$I gtkobject.inc}
{$I gtkwinapi.inc}
{$I gtklclintf.inc}
procedure InternalInit;
@ -399,6 +401,9 @@ end.
{ =============================================================================
$Log$
Revision 1.157 2003/11/24 11:03:07 marc
* Splitted winapi*.inc into a winapi and a lcl interface communication part
Revision 1.156 2003/11/10 16:15:32 micha
cleanups; win32 fpimage support

View File

@ -0,0 +1,95 @@
{ $ID: $ }
{******************************************************************************
All GTK interface communication implementations.
Initial Revision : Sun Nov 23 23:53:53 2003
!! Keep alphabetical !!
Support routines go to gtkproc.pp
******************************************************************************
Implementation
******************************************************************************
*****************************************************************************
* *
* This file is part of the Lazarus Component Library (LCL) *
* *
* See the file COPYING.LCL, included in this distribution, *
* for details about the copyright. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* *
*****************************************************************************
}
//##apiwiz##sps## // Do not remove
{------------------------------------------------------------------------------
Function: CheckMenuItem
Params: hndMenu: HMENU; uIDEnableItem: Integer; bChecked: Boolean
Returns: Nothing
------------------------------------------------------------------------------}
function TgtkObject.CheckMenuItem(hndMenu: HMENU; uIDEnableItem: Integer; bChecked: Boolean): Boolean;
var
LCLMenuItem: TMenuItem;
IsRadio: Boolean;
Group: PGSList;
begin
IsRadio := gtk_is_radio_menu_item(Pointer(hndMenu));
if IsRadio or gtk_is_check_menu_item(Pointer(hndMenu))
then begin
if IsRadio
then begin
Group := gtk_radio_menu_item_group(Pointer(hndMenu));
LockRadioGroupOnChange(Group, +1);
end
else LockOnChange(PgtkObject(hndMenu),1);
gtk_check_menu_item_set_active(PGtkCheckMenuItem(hndMenu),bChecked);
if IsRadio
then begin
LockRadioGroupOnChange(Group, -1);
end
else LockOnChange(PgtkObject(hndMenu),-1);
Result := True;
end else begin
LCLMenuItem:=TMenuItem(GetLCLObject(Pointer(hndMenu)));
if LCLMenuItem<>nil
then begin
LCLMenuItem.RecreateHandle;
Result := True;
end else
Result := False;
end;
end;
{------------------------------------------------------------------------------
Function: EnableMenuItem
Params: hndMenu:
uIDEnableItem:
Returns:
------------------------------------------------------------------------------}
function TGTKObject.EnableMenuItem(hndMenu: HMENU; uIDEnableItem: Integer;
bEnable: Boolean): Boolean;
begin
if hndMenu <> 0
then gtk_widget_set_sensitive(pgtkwidget(hndMenu), bEnable);
Result:=true;
end;
//##apiwiz##eps## // Do not remove, no wizard declaration after this line
{ =============================================================================
$Log$
Revision 1.1 2003/11/24 11:03:07 marc
* Splitted winapi*.inc into a winapi and a lcl interface communication part
}

View File

@ -0,0 +1,44 @@
{ $ID: $ }
{******************************************************************************
All GTK interface communication implementations.
Initial Revision : Sun Nov 23 23:53:53 2003
!! Keep alphabetical !!
Support routines go to gtkproc.pp
******************************************************************************
Interface
******************************************************************************
*****************************************************************************
* *
* This file is part of the Lazarus Component Library (LCL) *
* *
* See the file COPYING.LCL, included in this distribution, *
* for details about the copyright. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* *
*****************************************************************************
}
//##apiwiz##sps## // Do not remove
function CheckMenuItem(hndMenu: HMENU; uIDEnableItem: Integer; bChecked: Boolean): Boolean; override;
function EnableMenuItem(hndMenu: HMENU; uIDEnableItem: Integer; bEnable: Boolean): Boolean; override;
//##apiwiz##eps## // Do not remove, no wizard declaration after this line
{ =============================================================================
$Log$
Revision 1.1 2003/11/24 11:03:07 marc
* Splitted winapi*.inc into a winapi and a lcl interface communication part
}

View File

@ -35,19 +35,6 @@ const
//##apiwiz##sps## // Do not remove
function TgtkObject.BeginPaint(Handle: hWnd; Var PS : TPaintStruct) : hdc;
begin
PS.hDC:=GetDC(Handle);
Result := PS.hDC;
end;
Function TgtkObject.EndPaint(Handle : hwnd; var PS : TPaintStruct): Integer;
begin
Result:=1;
if PS.HDC <> 0 then
ReleaseDC(Handle, PS.HDC);
end;
{------------------------------------------------------------------------------
Method: Arc
Params: x,y,width,height,angle1,angle2
@ -124,6 +111,18 @@ begin
end;
end;
{------------------------------------------------------------------------------
Function: BeginPaint
Params:
Returns:
------------------------------------------------------------------------------}
function TgtkObject.BeginPaint(Handle: hWnd; Var PS : TPaintStruct) : hdc;
begin
PS.hDC:=GetDC(Handle);
Result := PS.hDC;
end;
{------------------------------------------------------------------------------
Function: BitBlt
Params: DestDC: The destination devicecontext
@ -233,46 +232,6 @@ begin
Result := Mess.Result;
end;
{------------------------------------------------------------------------------
Function: CheckMenuItem
Params: hndMenu: HMENU; uIDEnableItem: Integer; bChecked: Boolean
Returns: Nothing
------------------------------------------------------------------------------}
function TgtkObject.CheckMenuItem(hndMenu: HMENU; uIDEnableItem: Integer;
bChecked: Boolean): Boolean;
var
LCLMenuItem: TMenuItem;
IsRadio: Boolean;
Group: PGSList;
begin
IsRadio := gtk_is_radio_menu_item(Pointer(hndMenu));
if IsRadio or gtk_is_check_menu_item(Pointer(hndMenu))
then begin
if IsRadio
then begin
Group := gtk_radio_menu_item_group(Pointer(hndMenu));
LockRadioGroupOnChange(Group, +1);
end
else LockOnChange(PgtkObject(hndMenu),1);
gtk_check_menu_item_set_active(PGtkCheckMenuItem(hndMenu),bChecked);
if IsRadio
then begin
LockRadioGroupOnChange(Group, -1);
end
else LockOnChange(PgtkObject(hndMenu),-1);
Result:=true;
end else begin
LCLMenuItem:=TMenuItem(GetLCLObject(Pointer(hndMenu)));
if LCLMenuItem<>nil then begin
LCLMenuItem.RecreateHandle;
Result := true;
end else
Result := false;
end;
end;
{------------------------------------------------------------------------------
Function: ClientToScreen
Params: Handle : HWND; var P : TPoint
@ -1202,72 +1161,6 @@ begin
Assert(False, Format('Trace:< [TgtkObject.CreateCompatibleBitmap] DC: 0x%x --> 0x%x', [DC, Result]));
end;
function Tgtkobject.GetDIBits(DC: HDC; Bitmap: HBitmap; StartScan, NumScans: UINT;
Bits: Pointer; var BitInfo: BitmapInfo; Usage: UINT): Integer;
begin
Assert(False, 'trace:[TgtkObject.GetDIBits]');
Result := 0;
if IsValidGDIObject(Bitmap)
then begin
case PGDIObject(Bitmap)^.GDIType of
gdiBitmap:
Result := InternalGetDIBits(DC, Bitmap, StartScan, NumScans, -1, Bits,
BitInfo, Usage, True);
else
writeln('WARNING: [TgtkObject.GetDIBits] not a Bitmap!');
end;
end
else
writeln('WARNING: [TgtkObject.GetDIBits] invalid Bitmap!');
end;
function Tgtkobject.GetBitmapBits(Bitmap: HBITMAP; Count: Longint; Bits: Pointer): Longint;
var
BitInfo : tagBitmapInfo;
begin
Assert(False, 'trace:[TgtkObject.GetBitmapBits]');
Result := 0;
if IsValidGDIObject(Bitmap)
then begin
case PGDIObject(Bitmap)^.GDIType of
gdiBitmap:
Result := InternalGetDIBits(0, Bitmap, 0, 0, Count, Bits, BitInfo, 0, False);
else
writeln('WARNING: [TgtkObject.GetBitmapBits] not a Bitmap!');
end;
end
else
writeln('WARNING: [TgtkObject.GetBitmapBits] invalid Bitmap!');
end;
{------------------------------------------------------------------------------
function Tgtkobject.GetBitmapRawImageDescription(Bitmap: HBITMAP;
Desc: PRawImageDescription): boolean;
------------------------------------------------------------------------------}
function Tgtkobject.GetBitmapRawImageDescription(Bitmap: HBITMAP;
Desc: PRawImageDescription): boolean;
var
GDIObject: PGDIObject;
GdkPixmap: PGdkPixmap;
begin
Result:=false;
if not IsValidGDIObject(Bitmap) then begin
writeln('WARNING: [TgtkObject.GetBitmapRawImageDescription] invalid Bitmap!');
exit;
end;
GDIObject:=PGDIObject(Bitmap);
GdkPixmap:=nil;
case GDIObject^.GDIBitmapType of
gbBitmap: GdkPixmap:=PGdkPixmap(PGdiObject(Bitmap)^.GDIBitmapObject);
gbPixmap: GdkPixmap:=PGdkPixmap(PGdiObject(Bitmap)^.GDIPixmapObject);
else
writeln('WARNING: [TgtkObject.GetBitmapRawImageDescription] GDI_RGBImage not implemented');
exit;
end;
Result:=GetWindowRawImageDescription(PGdkWindow(GdkPixmap),Desc);
end;
{------------------------------------------------------------------------------
Function: CreateCompatibleDC
Params: none
@ -1633,6 +1526,7 @@ begin
end;
end;
{$EndIf}
{------------------------------------------------------------------------------
Function: CreatePalette
Params: LogPalette
@ -2058,86 +1952,6 @@ begin
Result:=true;
end;
{------------------------------------------------------------------------------
Function: ExtSelectClipRGN
Params: dc, RGN, Mode
Returns: integer
Combines the passed Region with the current clipping region in the device
context (dc), using the specified mode.
The Combine Mode can be one of the following:
RGN_AND : all points which are in both regions
RGN_COPY : an exact copy of the source region, same as SelectClipRGN
RGN_DIFF : all points which are in the Clipping Region but
not in the Source.(Clip - RGN)
RGN_OR : all points which are in either the Clip Region or
in the Source.(Clip + RGN)
RGN_XOR : all points which are in either the Clip Region
or in the Source, but not in both.
The result can be one of the following constants
Error
NullRegion
SimpleRegion
ComplexRegion
------------------------------------------------------------------------------}
function TgtkObject.ExtSelectClipRGN(dc: hdc; rgn : hrgn;
Mode : Longint) : Integer;
var
Clip,
Tmp : hRGN;
X, Y : Longint;
begin
Result := SIMPLEREGION;
If not IsValidDC(DC) then
Result := ERROR
else with TDeviceContext(DC) do
begin
if GC = nil
then begin
WriteLn('WARNING: [TgtkObject.ExtSelectClipRGN] Uninitialized GC');
Result := ERROR;
end
else begin
//writeln('TgtkObject.ExtSelectClipRGN A ClipRegValid=',DCClipRegionValid(DC),
// ' Mode=',Mode,' RGN=',GDKRegionAsString(PGdiObject(RGN)^.GDIRegionObject));
If ClipRegion=0 then begin
// there is no clipping region in the DC
Case Mode of
RGN_COPY:
begin
Result := RegionType(PGdiObject(RGN)^.GDIRegionObject);
If Result <> ERROR then
Result := SelectClipRGN(DC, RGN);
end;
RGN_OR,
RGN_XOR,
RGN_AND,
RGN_DIFF:
begin
BeginGDKErrorTrap;
GDK_Window_Get_Size(Drawable, @X, @Y);
EndGDKErrorTrap;
Clip := CreateRectRGN(0,0,X,Y);
Tmp := CreateEmptyRegion;
Result := CombineRGN(Tmp, Clip, RGN, mode);
DeleteObject(Clip);
SelectClipRGN(DC, Tmp);
DeleteObject(Tmp);
end;
end;
end
else
Result := Inherited ExtSelectClipRGN(dc, rgn, mode);
end;
end;
end;
{------------------------------------------------------------------------------
Function: DeleteDC
Params: none
@ -2874,21 +2688,6 @@ begin
[DC, Str, Count, Rect.Left, Rect.Top, Rect.Right, Rect.Bottom, Flags]));
end;
{------------------------------------------------------------------------------
Function: EnableMenuItem
Params: hndMenu:
uIDEnableItem:
Returns:
------------------------------------------------------------------------------}
function TGTKObject.EnableMenuItem(hndMenu: HMENU; uIDEnableItem: Integer;
bEnable: Boolean): Boolean;
begin
if hndMenu <> 0
then gtk_widget_set_sensitive(pgtkwidget(hndMenu), bEnable);
Result:=true;
end;
{------------------------------------------------------------------------------
Function: EnableScrollBar
Params: Wnd, wSBflags, wArrows
@ -2918,6 +2717,19 @@ begin
Result:=true;
end;
{------------------------------------------------------------------------------
Function: EndPaint
Params:
Returns:
------------------------------------------------------------------------------}
function TgtkObject.EndPaint(Handle : hwnd; var PS : TPaintStruct): Integer;
begin
Result:=1;
if PS.HDC <> 0 then
ReleaseDC(Handle, PS.HDC);
end;
{------------------------------------------------------------------------------
Method: Ellipse
Params: X1, Y1, X2, Y2
@ -3018,6 +2830,86 @@ begin
end;
end;
{------------------------------------------------------------------------------
Function: ExtSelectClipRGN
Params: dc, RGN, Mode
Returns: integer
Combines the passed Region with the current clipping region in the device
context (dc), using the specified mode.
The Combine Mode can be one of the following:
RGN_AND : all points which are in both regions
RGN_COPY : an exact copy of the source region, same as SelectClipRGN
RGN_DIFF : all points which are in the Clipping Region but
not in the Source.(Clip - RGN)
RGN_OR : all points which are in either the Clip Region or
in the Source.(Clip + RGN)
RGN_XOR : all points which are in either the Clip Region
or in the Source, but not in both.
The result can be one of the following constants
Error
NullRegion
SimpleRegion
ComplexRegion
------------------------------------------------------------------------------}
function TgtkObject.ExtSelectClipRGN(dc: hdc; rgn : hrgn;
Mode : Longint) : Integer;
var
Clip,
Tmp : hRGN;
X, Y : Longint;
begin
Result := SIMPLEREGION;
If not IsValidDC(DC) then
Result := ERROR
else with TDeviceContext(DC) do
begin
if GC = nil
then begin
WriteLn('WARNING: [TgtkObject.ExtSelectClipRGN] Uninitialized GC');
Result := ERROR;
end
else begin
//writeln('TgtkObject.ExtSelectClipRGN A ClipRegValid=',DCClipRegionValid(DC),
// ' Mode=',Mode,' RGN=',GDKRegionAsString(PGdiObject(RGN)^.GDIRegionObject));
If ClipRegion=0 then begin
// there is no clipping region in the DC
Case Mode of
RGN_COPY:
begin
Result := RegionType(PGdiObject(RGN)^.GDIRegionObject);
If Result <> ERROR then
Result := SelectClipRGN(DC, RGN);
end;
RGN_OR,
RGN_XOR,
RGN_AND,
RGN_DIFF:
begin
BeginGDKErrorTrap;
GDK_Window_Get_Size(Drawable, @X, @Y);
EndGDKErrorTrap;
Clip := CreateRectRGN(0,0,X,Y);
Tmp := CreateEmptyRegion;
Result := CombineRGN(Tmp, Clip, RGN, mode);
DeleteObject(Clip);
SelectClipRGN(DC, Tmp);
DeleteObject(Tmp);
end;
end;
end
else
Result := Inherited ExtSelectClipRGN(dc, rgn, mode);
end;
end;
end;
{------------------------------------------------------------------------------
Function: ExtTextOut
Params: none
@ -3504,6 +3396,86 @@ begin
then g_list_free(TopList);
end;
{------------------------------------------------------------------------------
Function: GetDIBits
Params:
Returns:
------------------------------------------------------------------------------}
function Tgtkobject.GetDIBits(DC: HDC; Bitmap: HBitmap; StartScan, NumScans: UINT;
Bits: Pointer; var BitInfo: BitmapInfo; Usage: UINT): Integer;
begin
Assert(False, 'trace:[TgtkObject.GetDIBits]');
Result := 0;
if IsValidGDIObject(Bitmap)
then begin
case PGDIObject(Bitmap)^.GDIType of
gdiBitmap:
Result := InternalGetDIBits(DC, Bitmap, StartScan, NumScans, -1, Bits,
BitInfo, Usage, True);
else
writeln('WARNING: [TgtkObject.GetDIBits] not a Bitmap!');
end;
end
else
writeln('WARNING: [TgtkObject.GetDIBits] invalid Bitmap!');
end;
{------------------------------------------------------------------------------
Function: GetBitmapBits
Params:
Returns:
------------------------------------------------------------------------------}
function Tgtkobject.GetBitmapBits(Bitmap: HBITMAP; Count: Longint; Bits: Pointer): Longint;
var
BitInfo : tagBitmapInfo;
begin
Assert(False, 'trace:[TgtkObject.GetBitmapBits]');
Result := 0;
if IsValidGDIObject(Bitmap)
then begin
case PGDIObject(Bitmap)^.GDIType of
gdiBitmap:
Result := InternalGetDIBits(0, Bitmap, 0, 0, Count, Bits, BitInfo, 0, False);
else
writeln('WARNING: [TgtkObject.GetBitmapBits] not a Bitmap!');
end;
end
else
writeln('WARNING: [TgtkObject.GetBitmapBits] invalid Bitmap!');
end;
{------------------------------------------------------------------------------
Function: GetBitmapRawImageDescription
Params: Bitmap: HBITMAP;
Desc: PRawImageDescription
Returns: boolean;
------------------------------------------------------------------------------}
function Tgtkobject.GetBitmapRawImageDescription(Bitmap: HBITMAP;
Desc: PRawImageDescription): boolean;
var
GDIObject: PGDIObject;
GdkPixmap: PGdkPixmap;
begin
Result:=false;
if not IsValidGDIObject(Bitmap) then begin
writeln('WARNING: [TgtkObject.GetBitmapRawImageDescription] invalid Bitmap!');
exit;
end;
GDIObject:=PGDIObject(Bitmap);
GdkPixmap:=nil;
case GDIObject^.GDIBitmapType of
gbBitmap: GdkPixmap:=PGdkPixmap(PGdiObject(Bitmap)^.GDIBitmapObject);
gbPixmap: GdkPixmap:=PGdkPixmap(PGdiObject(Bitmap)^.GDIPixmapObject);
else
writeln('WARNING: [TgtkObject.GetBitmapRawImageDescription] GDI_RGBImage not implemented');
exit;
end;
Result:=GetWindowRawImageDescription(PGdkWindow(GdkPixmap),Desc);
end;
{------------------------------------------------------------------------------
Function: GetCapture
Params: none
@ -9060,6 +9032,9 @@ end;
{ =============================================================================
$Log$
Revision 1.302 2003/11/24 11:03:07 marc
* Splitted winapi*.inc into a winapi and a lcl interface communication part
Revision 1.301 2003/11/23 13:13:35 mattias
added clWindow for gtklistitem

View File

@ -21,18 +21,16 @@
}
//##apiwiz##sps## // Do not remove
function BeginPaint(Handle: hWnd; Var PS : TPaintStruct) : hdc; override;
Function EndPaint(Handle : hwnd; var PS : TPaintStruct): Integer; override;
function Arc(DC: HDC; x,y,width,height,angle1,angle2 : Integer): Boolean; override;
function AngleChord(DC: HDC; x,y,width,height,angle1,angle2 : Integer): Boolean; override;
function BeginPaint(Handle: hWnd; Var PS : TPaintStruct) : hdc; override;
function BitBlt(DestDC: HDC; X, Y, Width, Height: Integer; SrcDC: HDC; XSrc, YSrc: Integer; Rop: DWORD): Boolean; override;
Function BringWindowToTop(hWnd : HWND): Boolean; override;
function CallNextHookEx(hHk: HHOOK; ncode : Integer; wParam, lParam : Longint) : Integer; override;
Function CallWindowProc(lpPrevWndFunc : TFarProc; Handle : HWND; Msg : UINT; wParam ,lParam : LongInt) : Integer; override;
function CheckMenuItem(hndMenu: HMENU; uIDEnableItem: Integer; bChecked: Boolean): Boolean; override;
Function ClientToScreen(Handle : HWND; var P : TPoint) : Boolean;override;
// clipboard
@ -72,11 +70,11 @@ function DrawEdge(DC: HDC; var Rect: TRect; edge: Cardinal; grfFlags: Cardinal):
function DrawText(DC: HDC; Str: PChar; Count: Integer; var Rect: TRect; Flags: Cardinal): Integer; Override;
function Ellipse(DC: HDC; x1,y1,x2,y2: Integer): Boolean; override;
function EnableMenuItem(hndMenu: HMENU; uIDEnableItem: Integer; bEnable: Boolean): Boolean; override;
function EnableScrollBar(Wnd: HWND; wSBflags, wArrows: Cardinal): Boolean; override;
function EnableWindow(hWnd: HWND; bEnable: Boolean): Boolean; override;
Procedure EnterCriticalSection(var CritSection: TCriticalSection); Override;
Function ExcludeClipRect(dc: hdc; Left, Top, Right, Bottom : Integer) : Integer; override;
function EndPaint(Handle : hwnd; var PS : TPaintStruct): Integer; override;
procedure EnterCriticalSection(var CritSection: TCriticalSection); 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;
@ -215,6 +213,9 @@ Function WindowFromPoint(Point : TPoint) : HWND; override;
{ =============================================================================
$Log$
Revision 1.81 2003/11/24 11:03:07 marc
* Splitted winapi*.inc into a winapi and a lcl interface communication part
Revision 1.80 2003/11/10 16:15:32 micha
cleanups; win32 fpimage support

View File

@ -1,6 +1,6 @@
{
/***************************************************************************
Interfaces.pp - determines what interface to use
Interfaces.pp - determines what interface to use
-------------------
Initial Revision : Thu July 1st CST 1999

View File

@ -51,6 +51,9 @@ uses
// All winapi related stuff
{$I winapih.inc}
// All interface communication
{$I lclintfh.inc}
function MakeLong(A,B : Word) : LongInt;
function MakeWord(A,B : Byte) : Word;
@ -122,6 +125,7 @@ begin
end;
{$I winapi.inc}
{$I lclintf.inc}
procedure InternalInit;
var
@ -147,6 +151,9 @@ end.
{
$Log$
Revision 1.3 2003/11/24 11:03:07 marc
* Splitted winapi*.inc into a winapi and a lcl interface communication part
Revision 1.2 2003/09/19 16:10:32 mattias
started TDBNavigator

View File

@ -267,6 +267,44 @@ const
PM_Noremove = 0;
PM_Remove = 1;
//==============================================
// Menu constants
//==============================================
MF_BYCOMMAND = 0;
MF_BYPOSITION = $400;
MF_BYHANDLE = $800; // introduced by the LCL
MF_SEPARATOR = $800;
MF_ENABLED = 0;
MF_GRAYED = 1;
MF_DISABLED = 2;
MF_UNCHECKED = 0;
MF_CHECKED = 8;
MF_USECHECKBITMAPS = $200;
MF_STRING = 0;
MF_BITMAP = 4;
MF_OWNERDRAW = $100;
MF_POPUP = $10;
MF_MENUBARBREAK = $20;
MF_MENUBREAK = $40;
MF_UNHILITE = 0;
MF_HILITE = $80;
MF_DEFAULT = $1000;
MF_SYSMENU = $2000;
MF_HELP = $4000;
MF_RIGHTJUSTIFY = $4000;
MF_MOUSESELECT = $8000;
MF_UNSUPPORTED = $FFFFFFFF;
//==============================================
// Keyboard constants
//==============================================
@ -1874,6 +1912,9 @@ end.
{
$Log$
Revision 1.50 2003/11/24 11:03:07 marc
* Splitted winapi*.inc into a winapi and a lcl interface communication part
Revision 1.49 2003/11/15 13:07:09 mattias
added ambigious unit check for IDE

View File

@ -29,6 +29,8 @@ uses
Classes, SysUtils;
const
//(*
// Part of LCLType
{These should be moved to the correct area eventually}
WS_EX_CLIENTEDGE = $200;
WS_HSCroll = $100000;
@ -36,6 +38,7 @@ const
WS_BORDER = $800000;
WS_CLIPCHILDREN = $2000000;
{}
//*)
csNone = 0;
csAlignment = 1;