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

お世話になります。

C++6.0 MFCで開発しております。

今、
(1)A.exeのボタンを押すとB.exeを起動(A.exeの上にB.exeが表示)
(2)B.exeが終了するとA.exeに終了通知をして、A.exeに処理を戻す。
 (A.exeを最前面に表示する)
(3)再度A.exeのボタンを押す。
 →(1)のときは、A.exeの上にB.exeが表示されていたのに、A.exeの下にB.exeが表示される


(2)のA.exeに処理を戻した後、A.exeが最前面に出るように
SetWindowPos(hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE)
を実行しています。

(1)、(3)のA.exeのボタンを押すと、A.exeの上にB.exeが表示され、
(2)の時に、A.exeが他のアプリケーションを含めて、最前面、モニターの最前面に表示されるようにしたいのです。

お手数ですがなにとぞよろしくお願いします。
以上よろしくお願いします。

A 回答 (3件)

最前面に表示すると言うAPIがあるのでソレを使ってみたらどうでしょうか?


(ごめんなさい関数名は思い出せません)
後、処理対象はウィンドウハンドルで指定するので、
他アプリは対象アプリのウィンドウハンドルを取得する必要があります。
    • good
    • 0
この回答へのお礼

ご返事ありがとうございます。

>最前面に表示すると言うAPIがあるのでソレを使ってみたらどうでしょうか?
私ももしや、1行ぐらいで、このアプリの画面を前面に出せ!!見たいな命令があるのかなとおもっていたのですが、うまくいかないのです。。。。

がんばってみます!!ありがとうございます。

お礼日時:2009/09/14 13:08

HWND_TOPMOSTは最前面に出すのではなく、最前面を維持する(タスクマネージャのように、他のウィンドウに隠されないようにする)ための指定です。

なので、B.exeの画面が後ろに行ってしまうのでしょう。
HWND_TOPではうまくいきませんか?
うまくいかない場合、AllowSetForegroundWindowで許可を与えた上で、SetForegroundWindowを使ってみてください。

SetForegroundWindow
http://msdn.microsoft.com/ja-jp/library/cc411039 …

参考URL:http://msdn.microsoft.com/ja-jp/library/cc411039 …
    • good
    • 0
この回答へのお礼

ご返事ありがとうございます。

>HWND_TOPではうまくいきませんか?
うまくいかないのです。。。

>うまくいかない場合、AllowSetForegroundWindowで許可を与えた上で、SetForegroundWindowを使ってみてください。
ありがとうございます。試して見ます

お礼日時:2009/09/14 13:05

A.EXEからB.EXEを起動するときに



SetWindowPos( hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE );
を実行してから B.EXEを実行してみましょう

B.EXEで A.EXEをHWND_TOPMOST指定でアクティブ化されていて
これを解除することなく 2回目のB.EXEの起動を行うので質問のような現象になります

SetForgroundWindow/AttachThreadInputなどを使う方法もありますよ
    • good
    • 0
この回答へのお礼

ご返事ありがとうございます。

>SetForgroundWindow/AttachThreadInputなどを使う方法もありますよ
調べてがんばってみます!!!

ありがとうございます。

お礼日時:2009/09/14 13:06

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