以下是我建的工程:
建一个基于Dialog的MFC程序(所有设置都是默认)
在对话框中加入一个Edit控件给类CMyDlg添加变量m_strEdit 类型为CString与Edit控件关联 在CMyApp::InitInstance()中把m_pMainWnd = &dlg去掉
在if (nResponse == IDOK)后加上语句:
AfxMessageBox(dlg.m_strEdit);
CMyDlg的构造函数中
初始化m_strEdit的值问题出在下面:
Edit中文本初始化可以有三种方法:
1.在CMyDlg构造函数中初始化变量m_strEdit
2.在CMyDlg::OnInitDialog()中,调用CDialog::OnInitDialog前改变m_strEdit的值
3.在CMyDlg::OnInitDialog()中,调用CDialog::OnInitDialog之后改变m_strEdit的值,然后加入语句UpdateData(false)。当我在构造函数中初始化变量m_strEdit的值后(例如 m_strEdit=str1)
为什么在CMyDlg::OnInitDialog()中,调用CDialog::OnInitDialog前改变m_strEdit的值可以使得初始化的值改变,而在调用CDialog::OnInitDialog之后改变m_strEdit的值而不加上语句UpdateData(false),文本框中内容仍是构造函数中初始化的值。即使没有进行DDX,在CDialog::OnInitDialog之后改变m_strEdit的值为str2,点击ok按钮后,AfxMessageBox显示的内容应该是str2,为什么仍然是str1?
建一个基于Dialog的MFC程序(所有设置都是默认)
在对话框中加入一个Edit控件给类CMyDlg添加变量m_strEdit 类型为CString与Edit控件关联 在CMyApp::InitInstance()中把m_pMainWnd = &dlg去掉
在if (nResponse == IDOK)后加上语句:
AfxMessageBox(dlg.m_strEdit);
CMyDlg的构造函数中
初始化m_strEdit的值问题出在下面:
Edit中文本初始化可以有三种方法:
1.在CMyDlg构造函数中初始化变量m_strEdit
2.在CMyDlg::OnInitDialog()中,调用CDialog::OnInitDialog前改变m_strEdit的值
3.在CMyDlg::OnInitDialog()中,调用CDialog::OnInitDialog之后改变m_strEdit的值,然后加入语句UpdateData(false)。当我在构造函数中初始化变量m_strEdit的值后(例如 m_strEdit=str1)
为什么在CMyDlg::OnInitDialog()中,调用CDialog::OnInitDialog前改变m_strEdit的值可以使得初始化的值改变,而在调用CDialog::OnInitDialog之后改变m_strEdit的值而不加上语句UpdateData(false),文本框中内容仍是构造函数中初始化的值。即使没有进行DDX,在CDialog::OnInitDialog之后改变m_strEdit的值为str2,点击ok按钮后,AfxMessageBox显示的内容应该是str2,为什么仍然是str1?
并没有创建 CDialog的窗口阿