プロが教えるわが家の防犯対策術!

お世話になっております。
VC2005を使用しております。
モードレスダイアログ(ポップアップ)を起動時から表示させて処理を行っております。
起動時に、モードレスダイアログがアクティブになってしまい、メインウィンドウがアクティブになりません(枠の色が薄い)
どのようにすれば、メインウィンドウがアクティブで起動するのでしょうか?
教えてください。
よろしくお願いします。

A 回答 (3件)

★アドバイス


・本当に『モードレスダイアログ』ですか?
>メインウィンドウがアクティブになりません(枠の色が薄い)
 ↑
 これは『モーダルダイアログ』だと思いますけど。
 どっちですか?
 ちなみに WS_EX_TOOLWINDOW スタイルを含んだダイアログですか?
・SetActiveWindow 関数でアクティブには出来ます。
 http://nienie.com/~masapico/api_SetActiveWindow. …
 これで上手くいかないときはもう少し補足して下さい。
・以上。
    • good
    • 0
この回答へのお礼

お世話になっております。
いつもありがとうございます。
ダイアログを閉じなくてもメインウィンドウの操作は可能なので、モードレスだと思います。
メインウィンドウ内で、何か操作をすればメインウィンドウがアクティブになります。
SetActiveWindowは確認したいと思います。
よろしくお願いします。

お礼日時:2007/10/19 22:58

どのようにして モードレスダイアログを作成表示していますか?


そのプロジェクトのプログラミングスタイルは何ですか?
Win32API/MFC/CLRなど

Win32APIスタイルでメインのWndProcの WM_CREATEメッセージ対応ルーチンで
ダイアログの作成・表示するなら質問のような現象にはなりませんが

InitInstanceで UpdateWindow(hWnd);の後でダイアログの作成・表示するなら質問のような現象にはなります
逆に ShowWindow(hWnd,nCmdShow);の前ならメインウィンドウがアクティブなりますよ
    • good
    • 0
この回答へのお礼

お世話になっております。
ご回答ありがとうございます。
プログラミングスタイルはMFCです。
InitInstanceでモードレス宣言しております。
メインのInitInstance終了後、モードレスダイアログの初期化が行われます。
よろしくお願いします。

お礼日時:2007/10/19 22:49

現象が再現できる最低限のコードを投稿してみませんか


文字ベースのコミュニティで文章だけでは現状把握が困難になる場合があります
MFCのウィザードでどこを標準の選択から変更したのかを明記して
現在のロジックを投稿してみましょう

SDI/MDI/Dialogベースどれでやってますか
# ダイアログベースは無いかな ・・・

> InitInstanceでモードレス宣言しております
モードレス宣言? そんなのありましたっけ
CDialogクラスのCreateを呼んだってことですか

そのモードレスダイアログのOnInitDialogの戻り値がTRUEになっているなら FALSEにしてみましょう
    • good
    • 0
この回答へのお礼

お世話になっております。
ご回答ありがとうございます。
そうですね。申し訳ありません。今手元にコードがありません。
分かる範囲でお答えいたします。
SDIでやってます。
プロジェクト名のファイルのInitInstanceでダイアログを作成してます。コードが分からなくて申し訳ありません。
ダイアログのOnInitDialogの戻り値確認してみます。
素人な回答で申し訳ありません。
よろしくお願いします。

お礼日時:2007/10/20 23:06

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