いつもお世話になっております。
開発環境:VC++6.0(MFC使用)、WinXP
メインフレームにてダイアログリソースを持つAPのアクティブ状態の制御が
うまくいかないので、ご助言をお願いします。
メインフレームから呼び出されるダイアログはPostMessageにより、起動依頼を
受け、親ウィンドウを指定して起動します。起動時にメインフレームにより
ダイアログのインスタンス管理を行っています。
ダイアログ破棄時は再度PostMessageにて破棄依頼をメインフレームへ送信し、
インスタンスの破棄を行っています。
複数のAPから同じダイアログを起動した場合、一方のAPにてダイアログを閉じると
その呼び出し元APがアクティブになってほしいのですが、もう一方のダイアログが
アクティブとなってしまいます。
SetForegroundWindowを使用する事により、一瞬切り替わった後に呼び出し元を
アクティブとする事はできるのですが、できれば切り替わりなくダイアログ終了時に
呼び出し元をアクティブとしたいと思っています。
Zオーダーが絡んでいるのかと思い、ダイアログ起動時に呼び出し元をSetWindowPosの
第二引数にHWND_TOPを指定したり、メインフレームをHWND_BOTTOMに指定したりした
のですが、現象は変わりませんでした。
また、AttachThreadInputにより、インプット状態を共有する方法も試しましたが、
現象は変わりませんでした。
リソースがメインフレームにあることから、メインフレームへのコールバックが
返ってきたときにメインフレームから起動しているダイアログがアクティブになって
いる事が原因と考えられますが、回避策等はありませんでしょうか?
的外れなことをいっていたらすいません。
ダイアログボックスを呼び出す際、
DialogBox(hInst,Template,hWnd,(DLGPROC)DlgProc);
の様にすると思うのですが、
第3引数をNULLにすると、
>その呼び出し元APがアクティブになってほしいのですが、もう一方のダイアログが
>アクティブとなってしまいます。
の様になることを、Dev-C++で確認しました。第3引数がNULLになってないでしょうか?
もし違っていたらすいません。