Wie sieht das aus.
Was ist falsch mein Programm oder das Programm welches die ZOrder meiner Anwendung verändert?
Ich erstelle ein Window und setze dieses auf die nächste ZOrder meiner Anwendung.
Delphi-Quellcode:
procedure TBassVis.SizeMove;
var
InsertAfter: HWND;
rc: TRect;
begin
if mVisParam.VisHandle <> 0 then
begin
InsertAfter := GetWindow(gG.MainHandle, GW_HWNDNEXT);
SetWindowPos(mVisParam.VisContainerHandle, InsertAfter, 0, 0, 0, 0,
SWP_NOMOVE or SWP_NOSIZE or SWP_NOOWNERZORDER or SWP_NOACTIVATE or SWP_ASYNCWINDOWPOS);
GetWindowRect(HSprDisplayC, rc);
MoveWindow(mVisParam.VisContainerHandle, rc.Left, rc.Top,
rc.Right - rc.Left, rc.Bottom - rc.Top, false);
end;
end;
Wenn sich das Fenster ändert führe ich SizeMove aus.
Delphi-Quellcode:
WM_SIZE, WM_MOVE, WM_WINDOWPOSCHANGED, WM_IME_NOTIFY:
if Assigned(VisBassVis) then
VisBassVis.SizeMove;
und beim start nachdem die Vis gestartet wurde.
Das Problem ist nun verwende ich Camtasia dann verdreht mir diese Anwendung die ZOrder.
Das Programm scannt wohl alle Fenster der Anwendung verdreht dann aber die ZOrder bzw. setzt sie falsch warum auch immer.
Wie kann ich dem gegenwirken.
Meine Funktion wie ich mir das dachte funktioniert leider nicht.
Vielleicht hat ja noch jemand einen Tip.
EDIT:
Ok geht jetzt.
Ich schicke einfach ein WM_NCACTIVATE dann reorganisiert sich das wieder.
So ein murks das andere Anwendungen sich da rein klemmen.
Preview: