EndDialog(IDOK)之后需要return

模态对话框常用EndDialog函数来让对话框返回,同时能传递给调用窗体一个返回值,EndDialog是通过调用CWnd的

EndModalLoop(int nResult)来通知窗体返回的。在void CWnd::EndModalLoop(int nResult)函数中会发送一个异步消息PostMessage(WM_NULL),也就是说EndDialog是异步的,所以如果在类似下面的代码中使用EndDialog,需要调用return,确保EndDialog之后的代码不会被执行

void CkDlg::OnBnClickedCancel()
{
    BOOL  isSuccess = true;
    if (isSuccess)
    {
        EndDialog(IDCANCEL);
        return;
    }
    MessageBox(_T("Test"));
}

原文地址:https://www.cnblogs.com/ityujian/p/3043623.html