uses
Windows, Messages;
var
WC: TWndClass;
H1, H2: hWND;
Message: TMsg;
function WP(Handle: HWND; Message: UINT; WP: WParam; LP: LParam): longint; stdcall;
begin
case Message of
wm_Destroy: if Handle = H1 then begin
PostQuitMessage(0);
Result := 0;
Exit;
end;
end;
Result := DefWindowProc(Handle, Message, WP, LP);
end;
begin
with WC do begin
Style := cs_HRedraw or cs_VRedraw or cs_OwnDC;
lpfnWndProc := @WP;
cbClsExtra := 0;
cbWndExtra := 0;
hInstance := MainInstance;
hIcon := 0;
hCursor := LoadCursor(0, idc_Arrow);
hbrBackground := Color_BtnFace + 1;
lpszMenuName := nil;
lpszClassName := 'Test';
end;
RegisterClass(WC);
H1 := CreateWindow('Test', 'Test1', ws_OverlappedWindow,
100, 100, 320, 200,
0, 0, MainInstance, nil);
H2 := CreateWindow('Test', 'Test2', ws_OverlappedWindow,
110, 110, 320, 200,
H1, 0, MainInstance, nil);
ShowWindow(H1, cmdShow);
UpdateWindow(H1);
ShowWindow(H2, sw_ShowNormal);
while GetMessage(Message, 0, 0, 0) do begin
TranslateMessage(Message);
DispatchMessage(Message);
end;
end.
Второе окно всегда сверху, даже когда первое активно.
Если у второго окна задавать родителем 0, то в панели задач будут 2 иконки, тоже не катит.
Что делать?
Как делать правильно?