2017-01-27 1 views
0

Ich habe eine WPF-Anwendung, die die ICDBurn-Schnittstelle verwendet, um einige Daten auf eine Festplatte zu brennen. Nach dem Aufruf von ICDBurn::Burn wird ein Dialogfeld angezeigt und der Benutzer sollte nicht in der Lage sein, mit der Anwendung zu arbeiten, bis dieser Dialog bearbeitet wird, was nicht das Standardverhalten ist. Ich habe versucht, sowohl IntPtr.Zero als auch die Anwendungen Hauptfenster Handle als Eltern zu ICDBurn::Burn, aber das Ergebnis war das gleiche.Einstellung des ICDBurn-Dialogfelds auf "modal" oder "always-on-top"

Also ich möchte, dass dieser Dialog modal ist, aber ich würde mich damit begnügen, diesen Dialog immer auch oben zu setzen.

Als ersten Schritt dachte ich mir, dass ich ein Handle für das Fenster des Dialogs benötige. Ich habe versucht EnumChildWindows, aber habe den Dialog dort nicht gefunden. Wie kann ich diesen Dialog auf modal setzen?

Edit: basierend auf dem Kommentar von IInspectable, übergab ich vielleicht das falsche Fenster zu brennen. Ich benutze new WindowInteropHelper(Application.Current.MainWindow).Handle und ich denke, ich verwende keine anderen Fenster in der Anwendung.

+0

* "Das Ergebnis war das gleiche" * - Was * ist * das beobachtete Verhalten? – IInspectable

+0

Ich bekomme einen Dialog, den ich in den Hintergrund schicken kann, indem ich auf das Hauptanwendungsfenster klicke. – Jens

+0

In diesem Fall übergeben Sie den falschen Fenstergriff in 'ICDBurn :: Burn'. Hätten Sie den richtigen Fenstergriff übergeben, wäre der Dialog immer vor dem eigenen Fenster (obwohl nicht unbedingt modal). Ich weiß nicht, welches Fensterhandle für eine WPF-Anwendung übergeben wird. – IInspectable

Antwort

0

Ahh, WPF ...

ICDBurn Um :: Brennen richtig offen als modaler Dialog, hat es auf dem UI-Thread aufgerufen werden (mit Application.Current.MainWindow.Dispatcher).

Verwandte Themen