EndDialog 是 MFC(Microsoft Foundation Classes)中的一个公共方法,用于结束模态对话框。该方法的原型如下:
virtual void EndDialog(int nResult);

EndDialog 方法接受一个整数参数 nResult,它表示对话框的结束状态。通常,IDOK 表示用户单击了对话框的 "OK" 按钮,而 IDCANCEL 表示用户单击了 "Cancel" 按钮。您可以传递其他值,以便根据需要表示其他状态。

以下是一个简单的示例,演示了如何使用 EndDialog 方法:
// MyDialog.h
#pragma once

#include "afxwin.h"

class CMyDialog : public CDialog
{
public:
    CMyDialog(CWnd* pParent = nullptr); // 默认构造函数

    // Dialog Data
    #ifdef AFX_DESIGN_TIME
        enum { IDD = IDD_MYDIALOG };
    #endif

protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

    // Implementation
protected:
    DECLARE_MESSAGE_MAP()
public:
    afx_msg void OnBnClickedOk();
    afx_msg void OnBnClickedCancel();
};

// MyDialog.cpp
#include "stdafx.h"
#include "MyDialog.h"

// CMyDialog 对话框

IMPLEMENT_DYNAMIC(CMyDialog, CDialog)

CMyDialog::CMyDialog(CWnd* pParent /*=nullptr*/)
    : CDialog(IDD_MYDIALOG, pParent)  // 使用对话框模板资源 ID 进行初始化
{
}

void CMyDialog::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
    ON_BN_CLICKED(IDOK, &CMyDialog::OnBnClickedOk)
    ON_BN_CLICKED(IDCANCEL, &CMyDialog::OnBnClickedCancel)
END_MESSAGE_MAP()

void CMyDialog::OnBnClickedOk()
{
    // 结束对话框,返回 IDOK
    EndDialog(IDOK);
}

void CMyDialog::OnBnClickedCancel()
{
    // 结束对话框,返回 IDCANCEL
    EndDialog(IDCANCEL);
}

在这个示例中,OnBnClickedOk 和 OnBnClickedCancel 函数通过调用 EndDialog 方法结束对话框,并返回相应的结果码。这样,当用户单击 "OK" 或 "Cancel" 按钮时,对话框会关闭,并根据用户的选择返回相应的结果码。


转载请注明出处:http://www.zyzy.cn/article/detail/17320/MFC/CDialog