У меня есть простое диалоговое окно со списком, полем редактирования и двумя кнопками, «Отправить» и «Очистить», «Отправить» по умолчанию. Когда он нажимается, строка считывается из окна редактирования и добавляется в список. Ясно говорит сам за себя. Когда я нажимаю кнопку ввода в первый раз, все работает, однако, когда я нажимаю второй раз, он не отвечает/не регистрируется. Если кнопка нажата, все работает по назначению.По умолчанию кнопка работает только один раз
Я попытался использовать DM_SETDEFID после изменения фокуса обратно в поле редактирования, это ничего не делало.
Удалите ненужный код, поэтому я надеюсь, что ничего не пропало.
INT_PTR CALLBACK CHAT(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
return (INT_PTR)TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDC_BUTTON1)
{
string strDisplay="You: "+strMessage;
TCHAR szDisplay[MESSAGE_SIZE];
strcpy_s(szDisplay, strDisplay.c_str());
SendDlgItemMessage(hDlg, IDC_LIST1, LB_ADDSTRING, NULL, (LPARAM)&szDisplay);
SetDlgItemText(hDlg, IDC_EDIT1, "");
}
SetFocus(GetDlgItem(hDlg, IDC_EDIT1));
}
else if(LOWORD(wParam) == IDC_BUTTON2)
{
SetDlgItemText(hDlg, IDC_EDIT1, "");
}
break;
case WM_CLOSE:
{
EndDialog(hDlg, LOWORD(wParam));
return (INT_PTR)TRUE;
}
}
return (INT_PTR)FALSE;
}
В файле ресурсов:
IDD_CHAT_DIALOG DIALOGEX 0, 0, 309, 176
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Chat"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
LTEXT "Message:",IDC_STATIC,198,12,102,8
EDITTEXT IDC_EDIT1,198,24,102,108,ES_MULTILINE
DEFPUSHBUTTON "Send",IDC_BUTTON1,198,138,104,14
PUSHBUTTON "Clear",IDC_BUTTON2,198,156,104,14
LISTBOX IDC_LIST1,7,7,185,167,LBS_NODATA | LBS_NOSEL | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
END
Вы можете опубликовать код? – MDMoore313
@ MDMoore313 Done – BioCycle