У меня есть поле CEdit в моем диалоговом окне, где я реализовал EN_KILLFOCUS
, поэтому, когда пользователь вводит неверные данные, предупреждающее сообщение отображается, когда фокус отходит от этого поля и возвращается фокус в поле CEdit, чтобы пользователь мог ввести правильные данные. Если пользователь вводит неверные данные и нажимает кнопку «ОТМЕНА», то также отображается предупреждающее сообщение, которое нежелательно, потому что пользователь все равно пытается отменить свои действия. Я попытался реализовать PostQuitMessage, когда пользователь нажимает кнопку CANCEL, но это закрывает все приложение. Я хочу, чтобы только мой диалог закрывался, когда пользователь нажимает кнопку ОТМЕНА. Есть ли способ закрыть диалоговое окно сразу после нажатия кнопки ОТМЕНА. Это код, который я пробовал.Закройте диалоговое окно, нажав кнопку ОТМЕНА, игнорируя EN_KILLFOCUS
void CMARPropWnd::OnParentNotify(UINT message, LPARAM lParam)
{
CCDialog::OnParentNotify(message, lParam);
// TODO: Add your message handler code here
CPoint ptButtonDown(LOWORD(lParam),HIWORD(lParam));
if ((message == WM_LBUTTONDOWN) && (ChildWindowFromPoint(ptButtonDown) == GetDlgItem(eMARPropWndCancelBtnId)))
{
PostQuitMessage(0);
}
}
Vaidation уже реализован в другом проекте. Я ничего не могу с этим поделать :) По-настоящему оценим, есть ли какое-то решение –
Вы пробовали отправить сообщение WM_CLOSE? – rrirower