2011-06-25 15 views
4

CreateWindowExを使用してウィンドウを作成しました。このウィンドウは、次のコードを使用してウィザードダイアログとして機能します。 WM_CREATEハンドラでCreateWindowEx()で作成されたウィンドウのデフォルトボタン

DWORD dwStyle = WS_DLGFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_OVERLAPPEDWINDOW; 
m_hWnd = CreateWindowEx(WS_EX_APPWINDOW, _T("WIZARD"), _T("SETUP"), dwStyle, CW_USEDEFAULT, CW_USEDEFAULT, WIZARD_WIDTH, WIZARD_HEIGHT, NULL, NULL, g_hInstance, this); 

私は下の「次へ」次へ「ボタンを、ボタンを「キャンセル」、「戻る」と私がセットスタイルBS_DEFPUSHBUTTONを作成して、私はのIDでウィンドウにDM_SETDEFIDを送ります次のボタン。ボタンは次のボタンのように表示されますが、入力フィールドのいずれかでリターンすると何も起こりません(なしはES_WANTRETURNに設定されています)。

私は間違っていますか?私は何か重要なことを逃した場合は、より多くのコードを投稿することができます。

おかげで、 J

+0

メッセージループで[IsDialogMessage()](http://msdn.microsoft.com/en-us/library/ms645498%28v=vs.85%29.aspx)を呼び出していますか? –

+0

はい、ループ内でIsDialogMessage()を呼び出します.Falseを返した場合、TranslateMessage()およびDispatchMessage()を呼び出します。 – JWood

答えて

2

DM_SETDEFIDメッセージが正常にDefDlgProcによって処理されます。 DefWindowProcを代わりに呼び出す場合は、IsDialogMessageがあなたのウィンドウにDM_GETDEFIDメッセージを送信したときに応答する方法を知るように、そのメッセージを自分で処理する必要があります。

関連する問題