ウィンドウのアクティブ状態の制御について – プログラミング – Home

ウィンドウのアクティブ状態の制御につい...
 
通知
すべてクリア

ウィンドウのアクティブ状態の制御について


ワイアード
 ワイアード
(@ワイアード)
ゲスト
結合: 17年前
投稿: 1
Topic starter  

いつもお世話になっております。

開発環境:VC++6.0(MFC使用)、WinXP

メインフレームにてダイアログリソースを持つAPのアクティブ状態の制御が
うまくいかないので、ご助言をお願いします。

メインフレームから呼び出されるダイアログはPostMessageにより、起動依頼を
受け、親ウィンドウを指定して起動します。起動時にメインフレームにより
ダイアログのインスタンス管理を行っています。
ダイアログ破棄時は再度PostMessageにて破棄依頼をメインフレームへ送信し、
インスタンスの破棄を行っています。

複数のAPから同じダイアログを起動した場合、一方のAPにてダイアログを閉じると
その呼び出し元APがアクティブになってほしいのですが、もう一方のダイアログが
アクティブとなってしまいます。

SetForegroundWindowを使用する事により、一瞬切り替わった後に呼び出し元を
アクティブとする事はできるのですが、できれば切り替わりなくダイアログ終了時に
呼び出し元をアクティブとしたいと思っています。

Zオーダーが絡んでいるのかと思い、ダイアログ起動時に呼び出し元をSetWindowPosの
第二引数にHWND_TOPを指定したり、メインフレームをHWND_BOTTOMに指定したりした
のですが、現象は変わりませんでした。

また、AttachThreadInputにより、インプット状態を共有する方法も試しましたが、
現象は変わりませんでした。

リソースがメインフレームにあることから、メインフレームへのコールバックが
返ってきたときにメインフレームから起動しているダイアログがアクティブになって
いる事が原因と考えられますが、回避策等はありませんでしょうか?


引用解決済
トピックタグ
n_n
 n_n
(@n_n)
ゲスト
結合: 19年前
投稿: 31
 

的外れなことをいっていたらすいません。
ダイアログボックスを呼び出す際、
DialogBox(hInst,Template,hWnd,(DLGPROC)DlgProc);
の様にすると思うのですが、
第3引数をNULLにすると、
>その呼び出し元APがアクティブになってほしいのですが、もう一方のダイアログが
>アクティブとなってしまいます。
の様になることを、Dev-C++で確認しました。第3引数がNULLになってないでしょうか?
もし違っていたらすいません。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました