【发布时间】:2014-03-24 21:40:10
【问题描述】:
我有以下代码尝试在 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);
将它们注释掉后,一切正常。
【问题讨论】:
-
我想你想在 CMetaDlg 类的 OnInitDailog() 中设置这些值。
-
不。试过你的建议。不起作用。
-
那么,我建议GetDoc()返回的指针是无效的。你检查过吗?
-
是的。我为 CEmergenceView::GetDoc()->author 替换了一个虚拟 CString。仍然给我一个调试断言错误....
-
您正在使用 SetWindowTextW。你的应用程序是为 Unicode 编译的吗?
标签: visual-c++ cedit mdc