如何在 MFC 中的子对话框上调用 DoDataExchange

问题描述 投票:0回答:1

我正在关注这篇文章:

在 MFC 中创建嵌入式对话框

我已经在我的测试项目中编译了它,但我有一个问题。文章最后写道:

最后一点要注意的是,即使它不在代码中,您也应该在

CEmbeddedDialogDlg::DoDataExchange
中调用
m_dlg1
m_dlg2
DoDataExchange
方法。

目前我有:

void CMFCApplication3Dlg::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_TAB1, m_ctlTab1);
}

我的三个子对话框

DoDataExchange
方法似乎不可用?我注意到在子对话框的所有三个实例中,该函数都具有
protected
的访问权限,这可能应该保持这样。那么在子对话框上调用
DoDataExchange
的正确方法是什么?

visual-c++ mfc dialog
1个回答
0
投票

根据我提出的评论:

void CPublicTalksSetupDlg::UpdateData(BOOL bSaveAndValidate)
{
    const auto current = m_tabReportMode.GetCurSel();

    if (current == 0)
    {
        m_dlgList.UpdateData(bSaveAndValidate);
    }
    else if (current == 1)
    {
        m_dlgReview.UpdateData(bSaveAndValidate);
    }
    else if (current == 2)
    {
        m_dlgSummary.UpdateData(bSaveAndValidate);
    }

    __super::UpdateData(bSaveAndValidate);
}

效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.