Кнопка по умолчанию в окне, созданном с помощью CreateWindowEx () - PullRequest
4 голосов
/ 25 июня 2011

Я создал окно, используя 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);

В обработчике WM_CREATE я создаю нижние кнопки «Далее», «Назад» и «Отмена», на кнопке «Далее» я устанавливаю стиль BS_DEFPUSHBUTTON и отправляю DM_SETDEFID в окно с Идентификатор следующей кнопки. Кнопка отображается как следующая кнопка, но нажатие клавиши return в любом из полей ввода ничего не дает (для None не установлено ES_WANTRETURN).

Что я делаю не так? Я могу опубликовать больше кода, если я что-то пропустил.

Спасибо, J

1 Ответ

2 голосов
/ 25 июня 2011

Сообщение DM_SETDEFID обычно обрабатывается DefDlgProc.Если вместо этого вы звоните DefWindowProc, то вам нужно обработать это сообщение самостоятельно, чтобы, когда IsDialogMessage отправляет вашему окну сообщение DM_GETDEFID, вы знали, как на него реагировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...