Hier geht es ohne Probleme und ist immer vorne, egal ob mit oder ohne
Handle.
Delphi-Quellcode:
procedure TForm8.Button1Click(Sender: TObject);
begin
//TaskDialog1.Execute;
TaskDialog1.Execute(Self.Handle);
end;
procedure TForm8.Button2Click(Sender: TObject);
begin
TForm8.Create(Self).Show;
end;
Allerdings stimmt was mit dem PopupMode nicht.
Alle neuen Fenster sind immer vorne, so als wenn wie die MainForm als PopupParent verwenden würden.
Das mit dem "Parent" ist richtig so.
Bei vielen
VCL-Dialogen hat die Execute-Funktion zwar einen Parent-Parameter,
aber oftmals wird Dieser intern garnicht verwendet, weil die jeweilige
API keinen Parent unterstützt.
Beim TaskDialog wird der Parent zwar durchgereicht,
aber man lese mal den Kommentar.
Delphi-Quellcode:
TASKDIALOGCONFIG = record
cbSize: UINT;
hwndParent: HWND; // incorrectly named, this is the owner window, not a parent.
Obwohl die Hilfe
TASKDIALOGCONFIG was Anderes sagt.
Zitat:
Handle to the parent window. This member can be NULL.
Womöglich wird der Wert nur für die XY-Position verwendet, aber nicht für Z? (TDF_POSITION_RELATIVE_TO_WINDOW aka tfPositionRelativeToWindow)