アプリ版:「スタンプのみでお礼する」機能のリリースについて

バックグラウンド(フォームは非表示にしている)で実行しているプログラムでエラーが発生した場合にサブフォームを表示しています。
このサブフォームを最前面に表示しフォームをアクティブにしたいのですがどのようにすればよろしいでしょうか?(このフォームにはテキストボックス等はなくラベルのみです。)
現在、SetWindowPosにてこのサブフォームのhwndを渡し、HWND_TOPMOSTにしサブフォームにSetFocusさせています。
しかし、実行されると最前面には来るのですがタイトルバーが点滅(?)した状態になりアクティブになりません。このフォームをクリックするとアクティブとなります。
よろしくお願いします。

A 回答 (1件)

SetForgroundWindowを使わないといけません


また Win2000以降でこのAPIの仕様が変更になったため
AttachThreadInputもあわせて使うようにしないと希望の動作にならないかと

1) 現在実行中のプロセスのスレッドIDを取得
GetForegroundWindow/GetWindowThreadProcessId
2) 自分のスレッドIDを取得
GetWindowThreadProcessId
3) AttachThreadInputの引数を自分のID、相手のID、TRUEを実行して接続する
4) SetForegroundWindowで自分自身を前面にする
5) AttachThreadInputの引数を自分のID、相手のID、FALSEを実行して接続を切る
    • good
    • 0
この回答へのお礼

ありがとうございます。
試してみたいと思います。

お礼日時:2009/02/12 09:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!