如何访问 MFC 中模式对话框的项目?

Posted

技术标签:

【中文标题】如何访问 MFC 中模式对话框的项目?【英文标题】:How can I get access to items of a modal dialog in MFC? 【发布时间】:2011-05-25 09:02:38 【问题描述】:

我只想访问模态对话框中的对象。以下示例将准确解释我正在尝试做的事情:

(此代码无效)

    CAddDlg dlg;
CString S;
dlg.DoModal();
dlg.GetDlgItem(IDC_NAME)->GetWindowTextW(S);
MessageBox(S);

但是断言会失败,我无法获得 Edit 控件的文本。 我该怎么办?

【问题讨论】:

查看这个问题的公认答案:***.com/questions/5945537/… 【参考方案1】:

您无法从外部访问模式对话框的控件。即使可以,这也不是一个好主意。对话框的调用者不应该知道数据在对话框中是如何表示的。现在是编辑控件,将来可能是列表框。

要走的路是声明您在DoModal() 之后调用的getter 函数(如果它返回IDOK)并在那里获取值。

查看Can I return a custom value from a dialog box's DoModal function? 获取一些示例

【讨论】:

以上是关于如何访问 MFC 中模式对话框的项目?的主要内容,如果未能解决你的问题,请参考以下文章

在 SDI mfc 应用程序中从视图访问模式对话框

如何在 MFC 应用程序中隐藏模式对话框?

MFC如何在切换视图时关闭无模式对话框

将焦点放在托管在 MFC 视图中的无模式对话框上

如何在 MFC No CLR 中访问 Winform ActiveX 控件

在 MFC 中切换到另一个模式对话框