获取MFC对话框成员变量内容

时间:2014-04-03 05:39:10

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

我的对话框包含绑定到CEdit m_edit成员变量的Text Edit控件。在show modal之后我需要获得Text Edit的内容。

BOOL CPreparationApp::InitInstance()

{


    MyDlg Dlg;

    m_pMainWnd = &Dlg;
    Dlg.DoModal();


    CString strLine;
     Dlg.m_edit.GetWindowTextW(strLine); // Debug assertion message

}

Durring Dlg.m_edit.GetWindowTextW(strLine);我有例外:

---------------------------
Microsoft Visual C++ Runtime Library
---------------------------
Debug Assertion Failed!

Program: C:\Windows\SYSTEM32\mfc110ud.dll
File: f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp
Line: 1215

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)

---------------------------
Abort   Retry   Ignore   
---------------------------

这个例外意味着什么?如何从m_edit复制字符串?

1 个答案:

答案 0 :(得分:1)

在DoModal之后,编辑框被销毁。所以你无法访问它。

您必须将文本从编辑框保存到OnOK()等函数中的CString成员变量。我假设你在对话框类中有OnOK()方法。

在对话框类中,您将拥有:

public:

CString m_editText;

在OnOK()中你会写:

m_edit.GetWindowTextW(m_editText);

调用DoModal后,您可以使用

访问该文本
Dlg.m_editText

您可以通过Get& amp;设置获取m_editText值的函数,而不是访问公共成员变量m_editText(这不是一个好的设计)。