
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5438 8e941d3f-bd1b-0410-a28a-d453659cc2b4
68 lines
1.5 KiB
ObjectPascal
68 lines
1.5 KiB
ObjectPascal
// doesn't used more!
|
|
// ALL CODE TAKEN FROM DELPHI7 - BORLAND CODE !!!!!!
|
|
// use for lazarus lclintf.pas
|
|
{
|
|
|
|
}
|
|
unit LazVCLFuncs;
|
|
|
|
{$I ffdefine.inc}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, Windows;
|
|
|
|
function AllocateHWnd(Method: TWndMethod): HWND;
|
|
procedure DeallocateHWnd(Wnd: HWND);
|
|
implementation
|
|
|
|
var
|
|
UtilWindowClass: TWndClass = (
|
|
style: 0;
|
|
lpfnWndProc: @DefWindowProc;
|
|
cbClsExtra: 0;
|
|
cbWndExtra: 0;
|
|
hInstance: 0;
|
|
hIcon: 0;
|
|
hCursor: 0;
|
|
hbrBackground: 0;
|
|
lpszMenuName: nil;
|
|
lpszClassName: 'TPUtilWindow');
|
|
|
|
function AllocateHWnd(Method: TWndMethod): HWND;
|
|
var
|
|
TempClass: TWndClass;
|
|
ClassRegistered: Boolean;
|
|
begin
|
|
UtilWindowClass.hInstance := HInstance;
|
|
{.$IFDEF PIC}
|
|
UtilWindowClass.lpfnWndProc := @DefWindowProc;
|
|
{.$ENDIF}
|
|
ClassRegistered := GetClassInfo(HInstance, UtilWindowClass.lpszClassName, TempClass);
|
|
//beep
|
|
if not ClassRegistered or (@TempClass.lpfnWndProc <> @DefWindowProc) then
|
|
begin
|
|
if ClassRegistered then
|
|
Windows.UnregisterClass(UtilWindowClass.lpszClassName, HInstance);
|
|
Windows.RegisterClass(UtilWindowClass);
|
|
end;
|
|
Result := CreateWindowEx(WS_EX_TOOLWINDOW, UtilWindowClass.lpszClassName,
|
|
'', WS_POPUP {+ 0}, 0, 0, 0, 0, 0, 0, HInstance, nil);
|
|
if Assigned(Method) then
|
|
SetWindowLong(Result, GWL_WNDPROC, Longint(MakeObjectInstance(Method)));
|
|
end;
|
|
|
|
procedure DeallocateHWnd(Wnd: HWND);
|
|
var
|
|
Instance: Pointer;
|
|
begin
|
|
Instance := Pointer(GetWindowLong(Wnd, GWL_WNDPROC));
|
|
DestroyWindow(Wnd);
|
|
if Instance <> @DefWindowProc then FreeObjectInstance(Instance);
|
|
end;
|
|
|
|
|
|
end.
|
|
|