■69674 / ) |
Re[1]: メインウィンドウの判断はどうやって行うの? |
□投稿者/ オショウ (122回)-(2014/01/19(Sun) 13:30:41)
|
■No69673 (C#初心者 さん) に返信 > これを行いたい理由は、 > あるタイミングでメインのウィンドウがC#で作成したアプリケーション以外 > の場合に、メインのウィンドウをC#で作成したアプリケーションに > 強制的に戻したいためです。 > > どなたかアドバイスのほどお願いします。
簡単に・・・とすると、基本、ウィンドウやコントロールには フォーカスを得た場合とフォーカスが無くなった場合のイベント があります。
他のウィンドウで作業と言うことは、そのメインたるウィンドウ はそれ以前にフォーカスをロストしたことになり、イベントが発 生したはずです。
よって、フォーカスがロストした以降で、何かの通信手段で表に なるよう知らせることができれば、メインウィンドウの方で、自 身がフォーカスを再取得するように動作させれば、欲しい機能と なると思います。
ただ、フォーカスをロストした後、何を以って表に持ってこさせ るか?と言う判断をどうするかです。 一般的には、スクリーンセーバーのように何もイベントが無くな ってしまい、所定の時間経過した場合に何らかのイベントを発生 させて、メインウィンドウを表にさせる。と言う動作でしょうか
しかしながら、全てのアプリに何らかの連携する機能を組み込ま ないといけないので、自分で作ったものでは無いアプリにも・・・ となると使えませんネ!
メインのアプリだけに細工するならば、スクリーンセーバーモド キの機能を組み込んで、所定時間、デスクトップにイベントが発 生しなくなったら、自分自身のメインウィンドウを表にさせる。 と言うような動きなら、メインのプログラムだけで済むかと思い ます。
残るは、本当にスクリンセーバー作って、メインのアプリに知ら せる方式とすることでしょうか。通知方法は、API のPostMessage でよいかと。メインのアプリは、WndProcをオーバーライドすれば PostMessageされたWM_USER+αのメッセージが受け取れるので。
※ 最終的には、簡単にはいかないか・・・
以上。参考まで
|
|