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

環境:WinXP+VC6(SP5)+MFC

アプリケーションクラスで、ダイアログを次のように表示しています。
BOOL CXXXXApp::InitInstance()
{
・・・・
CXXXXDlgdlg(AfxGetMainWnd()->GetDesktopWindow());
dlg.DoModal();
・・・・
}
で、ダイアログは表示されるのですが、クリックできません。
(ディスクトップもクリックできません。)
Enterなどキーイベントは問題なく処理されます。
どうすれば、クリックできるようになるでしょうか?
おかしな質問で申し訳ありませんが、よろしくお願いします。

A 回答 (2件)

ダイアログベースのアプリケーションってことですか?


それとも MDI/SDIなのでしょうか ・・・ または doc/Viewを使わないMFCとか
AppWizardが吐いたコードの InitInstanceのみをご質問のように変更してそのような状態になるのでしょうか

当方のVC6では現象を再現できないのですが ・・・
現象の再現手順を投稿してみましょう

この回答への補足

おはようございます。情報が不適格で申し訳ありません。
SDIアプリケーションを作っています。
doc/viewも使っています。
それで、AppクラスのInitInstanceにダイアログを追加して現象が発生します。
ただ、OSが、WinXPの場合は発生せず、98seやNT4.0で発生します。
記述が抜けていました。ごめんなさい。

これで、たぶん再現すると思います。
ご教授いただけましたら、お願いいたします。

補足日時:2007/12/21 08:27
    • good
    • 0

ん~ そうですね WinMEでも現象は起きるようです



dlgの親ウィンドウって NULLでいいのではないかと思います

CXXXdlg dlg;
dlg.DoModal();

としてやった場合はボタンも押せますよ … 対処療法ですが
    • good
    • 0
この回答へのお礼

dlgの親ウインドウをNULL(デフォルト)にすると、今度は、
親ウインドウがないというエラーが出ました。
ここです。
_AFXWIN_INLINE void CWnd::UpdateWindow()
{ ASSERT(::IsWindow(m_hWnd)); ::UpdateWindow(m_hWnd); }

で、いろいろ調べてみたのですが、モーダルダイアログの親ウインドウは、ディスクトップではいけないようです。
仕様を改めてみようと思います。
ありがとうございました。

お礼日時:2007/12/27 16:14

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