- - PR -
あるウィンドウをフォーカスを移さずに手前に移動したい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-05-26 16:22
こんにちは。お世話になってます。
現在、VC++.NET 2005のC++/CLIでアプリケーションを開発しています。 まず、メインウィンドウ(A)があり、そこにファイルメニュー等があります。 そして、データのメインになるウィンドウ1つとサブになるウィンドウ複数個があり、それで1組とします(B)。 (A)ウィンドウからファイルを開くと1組の(B)ウィンドウが開き、それらにデータの内容が表示されます。 (B)の組は複数開くことができます。 (B)を複数開くとウィンドウだらけになるので、(B)のメインウィンドウをマウスでクリックしてアクティブにすると、それに付属するサブのウィンドウも同時に手前に表示したいのです。 ただ、付属するサブのウィンドウはデータのメインのウィンドウよりは奥にあるほうがいいです。 現在、(B)のデータのメインになるウィンドウのActivedイベントのなかで、サブのウィンドウも手前に持ってくるようにするため、サブのウィンドウのBringToFrontメソッドを実行して手前に持ってきて、データのメインになるウィンドウを再度BringToFrontで手前に持ってきています。 しかし、この方法ではメインのウィンドウのActivedイベントが再度走ったり、サブのウィンドウにフォーカスが移ったりして、ウィンドウがちらちらした感じになります。 各ウィンドウにフォーカスが移動せず、いっぺんに(B)ウィンドウ組まるごと他のウィンドウより手前に持ってくることは可能でしょうか? [ メッセージ編集済み 編集者: maru 編集日時 2007-05-26 16:24 ] | ||||
|
投稿日時: 2007-05-26 22:11
そういうときこそオーナーフォームの出番なんだろうけど設計も少し見直してみて。
| ||||
|
投稿日時: 2007-05-27 14:19
ぶさいくろうさんの言うように Form#Owner プロパティでも maru さんの今回の要求であればできると思いますが、親子関係がもう少し複雑(例えば親が複数とか)になると対応できなくなります。 そのような場合は Windows API の SetWindowPos() を SWP_NOACTIVATE フラグ付きで使うとフォーカスを設定しない(アクティブにしない)でウィンドウの Zオーダー を変えることができます。 | ||||
|
投稿日時: 2007-05-28 09:07
こんにちは。
返答ありがとうございました。きよのさんの方法でうまくいきました。 |
1