单击取消按钮忽略EN_KILLFOCUS关闭对话框

时间:2014-12-29 14:00:22

标签: visual-c++ mfc message-map

我的对话框中有一个CEdit字段,我已经实现了EN_KILLFOCUS,因此当用户输入无效数据时,当焦点离开此字段并且焦点返回到CEdit字段时会显示警告消息用户可以输入正确的数据。如果用户输入无效数据并单击取消按钮,则还会显示警告消息,这是不合需要的,因为用户无论如何都试图取消其操作。当用户点击CANCEL按钮时,我尝试实现PostQuitMessage,但这会关闭整个应用程序。我只想在用户点击CANCEL按钮时关闭我的对话框。单击“取消”按钮后,有什么方法可以立即关闭对话框。这是我试过的代码。

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);
    } 
}

1 个答案:

答案 0 :(得分:0)

尝试

OnCancel();

而不是PostQuitMessage(0);

请注意,OnCancel()是CDialog的虚方法,所以这是“最正确的”,并且会执行任何可能覆盖默认CDialog行为的特殊代码。