C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 119 を表示中)
■69674 / )  Re[1]: メインウィンドウの判断はどうやって行うの?
□投稿者/ オショウ (122回)-(2014/01/19(Sun) 13:30:41)
No69673 (C#初心者 さん) に返信
> これを行いたい理由は、
> あるタイミングでメインのウィンドウがC#で作成したアプリケーション以外
> の場合に、メインのウィンドウをC#で作成したアプリケーションに
> 強制的に戻したいためです。
>
> どなたかアドバイスのほどお願いします。

  簡単に・・・とすると、基本、ウィンドウやコントロールには
  フォーカスを得た場合とフォーカスが無くなった場合のイベント
  があります。

  他のウィンドウで作業と言うことは、そのメインたるウィンドウ
  はそれ以前にフォーカスをロストしたことになり、イベントが発
  生したはずです。

  よって、フォーカスがロストした以降で、何かの通信手段で表に
  なるよう知らせることができれば、メインウィンドウの方で、自
  身がフォーカスを再取得するように動作させれば、欲しい機能と
  なると思います。

  ただ、フォーカスをロストした後、何を以って表に持ってこさせ
  るか?と言う判断をどうするかです。
  一般的には、スクリーンセーバーのように何もイベントが無くな
  ってしまい、所定の時間経過した場合に何らかのイベントを発生
  させて、メインウィンドウを表にさせる。と言う動作でしょうか

  しかしながら、全てのアプリに何らかの連携する機能を組み込ま
  ないといけないので、自分で作ったものでは無いアプリにも・・・
  となると使えませんネ!

  メインのアプリだけに細工するならば、スクリーンセーバーモド
  キの機能を組み込んで、所定時間、デスクトップにイベントが発
  生しなくなったら、自分自身のメインウィンドウを表にさせる。
  と言うような動きなら、メインのプログラムだけで済むかと思い
  ます。

  残るは、本当にスクリンセーバー作って、メインのアプリに知ら
  せる方式とすることでしょうか。通知方法は、API のPostMessage
  でよいかと。メインのアプリは、WndProcをオーバーライドすれば
  PostMessageされたWM_USER+αのメッセージが受け取れるので。

※ 最終的には、簡単にはいかないか・・・

以上。参考まで
返信 編集キー/


管理者用

- Child Tree -