home   |   -   |   A-Z   |  








TLiteWindow

////////////////////////////////////////////////////////////////////////////////

// TLiteWindow

// _______________________________________________

// /

////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////

//

////////////////////////////////////////////////////////////////////////////////

constructor TLiteWindow.Create(AWndParent: THandle);

begin

inherited;

//

CreateWindowParams(FWndParams);

//

RegisterClass(FWndParams.WindowClass);

//

with FWndParams do

CreateWindowEx(ExStyle, WindowClass.lpszClassName, Caption,

Style, X, Y, Width, Height,

WndParent, WndMenu, hInstance, Param

);

end;


////////////////////////////////////////////////////////////////////////////////

//

////////////////////////////////////////////////////////////////////////////////

constructor TLiteWindow.CreateSubclassed(AWnd: THandle);

begin

inherited Create(GetParent(AWnd));

//

FWndSubclass := Pointer(GetWindowLong(AWnd, GWL_WNDPROC));

//

FWndHandle := AWnd;

//

SetWindowLong(FWndHandle, GWL_WNDPROC, DWord(WndCallback));

end;


////////////////////////////////////////////////////////////////////////////////

//

////////////////////////////////////////////////////////////////////////////////

destructor TLiteWindow.Destroy;

begin

// - ?

if FWndSubclass = nil then

begin

//

UnregisterClass(FWndParams.WindowClass.lpszClassName, hInstance);

//

if IsWindow(FWndHandle) then DestroyWindow(FWndHandle);

end

else

//

SetWindowLong(FWndHandle, GWL_WNDPROC, DWord(FWndSubclass));

//

inherited;

end;


////////////////////////////////////////////////////////////////////////////////

//

////////////////////////////////////////////////////////////////////////////////

procedure TLiteWindow.CreateWindowParams(

var WindowParams: TWindowParams);

var

WndClassName : string;

begin

//

Str(DWord(Self), WndClassName);

WndClassName := ClassName+':'+WndClassName;

//

with FWndParams.WindowClass do

begin

style := CS_DBLCLKS;

lpfnWndProc := WndCallback;

cbClsExtra := 0;

cbWndExtra := 0;

lpszClassName := PChar(WndClassName);

hInstance := hInstance;

hIcon := LoadIcon(0, IDI_APPLICATION);

hCursor := LoadCursor(0, IDC_ARROW);

hbrBackground := COLOR_BTNFACE + 1;

lpszMenuName := '';

end;

//

with FWndParams do

begin

WndParent := FWndParent;

Caption := 'Lite Window';

Style := WS_OVERLAPPEDWINDOW or WS_VISIBLE;

ExStyle := 0;

X := Integer(CW_USEDEFAULT);

Y := Integer(CW_USEDEFAULT);

Width := Integer(CW_USEDEFAULT);

Height := Integer(CW_USEDEFAULT);

WndMenu := 0;

Param := nil;

end;

end;


////////////////////////////////////////////////////////////////////////////////

// TLiteWindow

// ______________________________________________

//

////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////

//

////////////////////////////////////////////////////////////////////////////////

procedure TLiteWindow.DefaultHandler(var Msg);

begin

// - ?

if FWndSubclass = nil then

//

with TMessage(Msg) do

Result := DefWindowProc(FWndHandle, Msg, WParam, LParam)

else

//

with TMessage(Msg) do

Result := CallWindowProc(FWndSubclass, FWndHandle, Msg,

WParam, LParam);

end;


TLiteFrame | Delphi | TLiteDialog