0

我有以下代码尝试在 Cedit 文本框中设置文本:

class CMetaDlg : public CDialogEx
{
public:
CMetaDlg();

// Dialog Data
enum { IDD = IDD_META };

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

// Implementation
protected:
DECLARE_MESSAGE_MAP()
public:
CEdit m_author;
CEdit m_sources;
afx_msg void OnBnClickedOk();
};

CMetaDlg::CMetaDlg() : CDialogEx(CMetaDlg::IDD)
{
}

void CMetaDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_AUTHOR, m_author);
DDX_Control(pDX, IDC_SOURCES, m_sources);
}

BEGIN_MESSAGE_MAP(CMetaDlg, CDialogEx)
ON_BN_CLICKED(IDOK, &CMetaDlg::OnBnClickedOk)
END_MESSAGE_MAP()

void CEmergenceApp::OnFileMeta()
{


CMetaDlg md;    
md.DoModal();
md.m_author.SetWindowTextW(CEmergenceView::GetDoc()->author);
md.m_sources.SetWindowTextW(CEmergenceView::GetDoc()->sources);
}

这给了我一个调试断言错误。我假设问题出在以下几行:

md.m_author.SetWindowTextW(CEmergenceView::GetDoc()->author);
md.m_sources.SetWindowTextW(CEmergenceView::GetDoc()->sources);

将它们注释掉时,一切正常。

4

1 回答 1

0

当您调用 DoModal 时,对话框被创建,编辑控件被创建,然后当用户单击 OK 或 Cancel 时,编辑控件和对话框窗口被销毁。然后 DoModal 返回。我不明白你试图在对话框关闭后设置编辑控件的文本来做什么。

于 2014-03-24T13:40:10.610 回答