- ベストアンサー
起動時のメインウィンドウのアクティブ化
お世話になっております。 VC2005を使用しております。 モードレスダイアログ(ポップアップ)を起動時から表示させて処理を行っております。 起動時に、モードレスダイアログがアクティブになってしまい、メインウィンドウがアクティブになりません(枠の色が薄い) どのようにすれば、メインウィンドウがアクティブで起動するのでしょうか? 教えてください。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
★アドバイス ・本当に『モードレスダイアログ』ですか? >メインウィンドウがアクティブになりません(枠の色が薄い) ↑ これは『モーダルダイアログ』だと思いますけど。 どっちですか? ちなみに WS_EX_TOOLWINDOW スタイルを含んだダイアログですか? ・SetActiveWindow 関数でアクティブには出来ます。 http://nienie.com/~masapico/api_SetActiveWindow.html これで上手くいかないときはもう少し補足して下さい。 ・以上。
その他の回答 (2)
- redfox63
- ベストアンサー率71% (1325/1856)
現象が再現できる最低限のコードを投稿してみませんか 文字ベースのコミュニティで文章だけでは現状把握が困難になる場合があります MFCのウィザードでどこを標準の選択から変更したのかを明記して 現在のロジックを投稿してみましょう SDI/MDI/Dialogベースどれでやってますか # ダイアログベースは無いかな ・・・ > InitInstanceでモードレス宣言しております モードレス宣言? そんなのありましたっけ CDialogクラスのCreateを呼んだってことですか そのモードレスダイアログのOnInitDialogの戻り値がTRUEになっているなら FALSEにしてみましょう
お礼
お世話になっております。 ご回答ありがとうございます。 そうですね。申し訳ありません。今手元にコードがありません。 分かる範囲でお答えいたします。 SDIでやってます。 プロジェクト名のファイルのInitInstanceでダイアログを作成してます。コードが分からなくて申し訳ありません。 ダイアログのOnInitDialogの戻り値確認してみます。 素人な回答で申し訳ありません。 よろしくお願いします。
- redfox63
- ベストアンサー率71% (1325/1856)
どのようにして モードレスダイアログを作成表示していますか? そのプロジェクトのプログラミングスタイルは何ですか? Win32API/MFC/CLRなど Win32APIスタイルでメインのWndProcの WM_CREATEメッセージ対応ルーチンで ダイアログの作成・表示するなら質問のような現象にはなりませんが InitInstanceで UpdateWindow(hWnd);の後でダイアログの作成・表示するなら質問のような現象にはなります 逆に ShowWindow(hWnd,nCmdShow);の前ならメインウィンドウがアクティブなりますよ
お礼
お世話になっております。 ご回答ありがとうございます。 プログラミングスタイルはMFCです。 InitInstanceでモードレス宣言しております。 メインのInitInstance終了後、モードレスダイアログの初期化が行われます。 よろしくお願いします。
お礼
お世話になっております。 いつもありがとうございます。 ダイアログを閉じなくてもメインウィンドウの操作は可能なので、モードレスだと思います。 メインウィンドウ内で、何か操作をすればメインウィンドウがアクティブになります。 SetActiveWindowは確認したいと思います。 よろしくお願いします。