lazarus/lcl/interfaces/gtk2/gtk2windows.pas
mattias f8c567425b lcl: gtk2: fixed compilation
git-svn-id: trunk@53319 -
2016-11-08 15:53:44 +00:00

58 lines
1.3 KiB
ObjectPascal

unit gtk2windows;
{$mode objfpc}{$H+}
interface
{$ifdef Windows}
uses
Windows;
function GetWin32AppHandle: THandle; // Beware LCLType.THandle <> Windows.THandle
{$endif}
implementation
{$ifdef Windows}
const
ClsName: array[0..6] of char = 'Window'#0;
PrivateAppHandle: THandle = 0;
function GetWin32AppHandle: THandle;
var
WindowClass: WndClass;
begin
if PrivateAppHandle=0 then begin
// register class
with WindowClass do
begin
Style := CS_DBLCLKS{CS_HRedraw or CS_VRedraw};
LPFnWndProc := @Windows.DefWindowProc;
CbClsExtra := 0;
CbWndExtra := 0;
hInstance := System.HInstance;
hIcon := Windows.LoadIcon(0, IDI_APPLICATION);
hCursor := Windows.LoadCursor(0, IDC_ARROW);
hbrBackground := 0; {GetSysColorBrush(Color_BtnFace);}
LPSzMenuName := Nil;
LPSzClassName := @ClsName;
end;
if Windows.RegisterClass(@WindowClass) <> 0 then begin
PrivateAppHandle := CreateWindow(@ClsName, nil,
WS_POPUP or WS_CLIPSIBLINGS or WS_SYSMENU or WS_MINIMIZEBOX,
0, 0, 0, 0, HWND(nil), HMENU(nil), HInstance, nil);
end;
end;
result := PrivateAppHandle;
end;
finalization
if PrivateAppHandle <> 0 then begin
DestroyWindow(PrivateAppHandle);
Windows.UnregisterClass(@ClsName, System.HInstance);
end;
{$endif}
end.