ダイアログ閉じた後でオーナーウィンドウが背後に回る – プログラミング – Home

ダイアログ閉じた後でオーナーウィンドウ...
 
通知
すべてクリア

ダイアログ閉じた後でオーナーウィンドウが背後に回る


masa
 masa
(@masa)
ゲスト
結合: 24年前
投稿: 64
Topic starter  

Windows2000, VisualC++6.0

題目通り、とあるダイアログをDialogBoxで呼び出した後で、
CANCEL等をしてEndDialog(hDlg, false)すると、今まではそのまま親ウィンドウに戻ったので
すが、
追加したダイアログでほぼ全く同じ設定値のはずなのに、親ウィンドウが隠れてしまいます。
最小化されたわけでは無いみたいです。
他のダイアログでDialogBoxで呼び出してから親ウィンドウに戻っても大丈夫ですが、
新しく追加したダイアログは駄目でした・・・。
特にどこかを弄った訳では無いのですが、何か原因になり得るものありますでしょうか?


引用解決済
トピックタグ
masa
 masa
(@masa)
ゲスト
結合: 24年前
投稿: 64
Topic starter  

未だ解決しないのですが、何か助言頂けませんでしょうか・・・。
ビルドしたプログラムでも同様に、特定のモーダルダイアログ(DialogBox)を閉じると親ウィン
ドウのメインウィンドウが一つ下に隠れてしまいます。
最小化ではないのです。他のダイアログと設定は同じはずなのですが・・・。


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

# 私には思い当たることがありませんし、状況も分かりかねますので、
# あくまで一般的な助言を。

実際のコードなしに同じはずと書かれても、
どこかでミスや勘違いをしてると想像するくらいしか出来ませんので、
できれば最小限の再現コードなど提示してみてはどうでしょう。
これを作る過程で問題の原因が分かることも多々あると思います。

版管理していないならまずはバックアップを取って、
他のダイアログと処理内容が同じになるように一つづつ処理を外して/追加していけば、
挙動がかわったった時が犯人だと思います。
その部分について具体的にコードを示せば助言も得やすいのではないでしょうか。
この時点で「分かってしまえば聞くまでもない」可能性もあります。

また、全部実処理を外してスケルトン状態でも現象が再現する場合でも、
そのコードを示せば助言は得やすくなると思います。


返信引用
forty-five
 forty-five
(@forty-five)
ゲスト
結合: 19年前
投稿: 22
 

これって多分 Windows の仕様だと思いますよ。
MFC が ::SetActiveWindow() 使って自前でアクティブにしているぐらいなので
自分で適切なウィンドウをアクティブにしないとダメなんじゃないかと思います。

アクティブにするウィンドウの取得は ::GetLastActivePopup() を使うといいです。


返信引用
masa
 masa
(@masa)
ゲスト
結合: 24年前
投稿: 64
Topic starter  

なるほど。。何故残り二つのダイアログが、ちゃんと親ウィンドウに戻るかが不思議ですが。
ちょっと質問の仕方が悪かったですね。
どういう場合において、親ウィンドウにちゃんと戻らないでしょうかと訊けば良かったかもで
す。。
MFCは使ってないけど、その辺はWindowsの仕様として考えていいのかな・・・。
取りあえず暫定的にアクティブ化させるようにしてみます。
グローバル変数でメインウィンドウのハンドルは取得済みなので。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

一般論ですと、子ウィンドウが閉じるときに親ウィンドウが
enableでない場合、フォーカスが別のアプリケーションに
移ってしまいます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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