私はOwned windowsとその所有者の間の契約について知っており、所有者が隠されている場合は所有ウィンドウは隠されています。これは実際に私が望むものです。問題は、所有者ウィンドウの後にの所有者ウィンドウが最小化されている場合、所有ウィンドウが非表示ではなく通常は画面に表示されることです。この場合、WindowのWindowStateは起動時に最小化され、表示されているOwnedウィンドウが画面に表示されます。所有者が最小化された後に所有ウィンドウを非表示にする方法は?
私はShowOwnedPopupsにOSに強制的に所有されたすべてのウィンドウを非表示にすることができると知っていますが、これはオーナーウィンドウが実際に表示された後にのみ動作するように見えます。私は明示的にウィンドウを隠してみましたが(例えば、WS_VISIBLEビットを削除するかWM_SHOWCOMMANDを変更して隠して表示するようにしようとしましたが)、Ownerが復元されたときにOwnedウィンドウは表示されません。これは、ShowOwnedPopups APIのドキュメントと一致しており、それによってShowOwnedPopups呼び出しによって隠されたウィンドウだけが表示されます。
OSをウィンドウに表示させる方法を探しています。これは、オーナーが復元されるまでエンドユーザーに表示されないようにする方法です。 - または - ウィンドウにフラグを設定する方法ウィンドウを非表示にして、ShowOwnedPopupsを使用してウィンドウを隠してしまったと思ったら、手動でウィンドウを隠してそのフラグを設定します。
所有されたウィンドウを表示しているコードはシェルに関連付けられていないので、所有者が復元されるまで所有ウィンドウが表示されないという単純な問題ではありません。これは別のカスタムコントロールの一部です。この場合、WPFコントロールであるため、ElementHostでコントロールを使用することもできますので、所有ウィンドウのWindowStateだけを見ることはできません。しかし、どのWindows APIソリューションも歓迎されています。
オーナーが最小化された後の所有者ウィンドウの表示方法は?タスクバーの所有ウィンドウをクリックしますか?要件でない場合は、タスクバーのウィンドウを隠すことができます。そのため、所有されているウィンドウを表示することは、ユーザーにとってより困難になります。あなたの事件について説明してください。 –
この特定の場合、ショーは「自動」です。コントロールは、所有されているウィンドウを表示することを含む以前の状態を復元しています。だから、明らかにするために、ユーザーは私のコントロールを自分のウィンドウに置いた。ウィンドウのWindowStateを最小化に設定します。ウィンドウがロードされると、OSによって "最小化されて表示"され、コントロールが初期化/ロードされると、以前の状態が復元され、最後にコントロールが表示されたウィンドウが表示されます中古。 – AndrewS
ところで、単純な例を見たい場合は、WPFアプリケーションを作成してください。作成するメインウィンドウのWindow状態をMinimizedに設定します。 Loadedイベントをフックします。例えば'void MainWindow_Loaded(オブジェクト送信者、RoutedEventArgs e) { var w =新しいウィンドウ(); w.Owner = this; w.Show(); } ' – AndrewS