visual-c – 关闭后,从模态MFC对话框中获取编辑框文本
发布时间:2020-12-16 10:54:49 所属栏目:百科 来源:网络整理
导读:从模态MFC对话框,我想在关闭对话框后从编辑框中提取文本.我试过这个: CPreparationDlg Dlg;CString m_str;m_pMainWnd = Dlg;Dlg.DoModal();CWnd *pMyDialog=AfxGetMainWnd();CWnd *pWnd=pMyDialog-GetDlgItem(IDC_EDIT1);pWnd-SetWindowText("huha max");re
从模态MFC对话框,我想在关闭对话框后从编辑框中提取文本.我试过这个:
CPreparationDlg Dlg; CString m_str; m_pMainWnd = &Dlg; Dlg.DoModal(); CWnd *pMyDialog=AfxGetMainWnd(); CWnd *pWnd=pMyDialog->GetDlgItem(IDC_EDIT1); pWnd->SetWindowText("huha max"); return TRUE; 这是行不通的. 解决方法
在调用DoModal()之前,不会创建对话框及其控件,并且已经指出,在DoModal()返回时已经销毁了该对话框及其控件.因此,您无法在DoModal()之前或之后调用GetDlgItem().将数据传递或检索到控件的解决方案是使用类中的变量.您可以在调用DoModal()之前在创建类实例时进行设置.在OnInitDialog()中,您将控件的值放入控件中.然后,当窗口被销毁时,您将从控件获取值并将其放入变量中.然后从调用上下文中读取变量.
像这样的东西(注意我直接在浏览器中键入它,所以可能有错误): class CMyDialog : CDialog { CString m_value; public: CString GetValue() const {return m_value;} void SetValue(const CString& value) {m_value = value;} virtual BOOL OnInitDialog(); virtual BOOL DestroyWindow( ); } BOOL CMyDialog::OnInitDialog() { CDialog::OnInitDialog(); SetDlgItemText(IDC_EDIT1,m_value); return TRUE; } BOOL CMyDialog::DestroyWindow() { GetDlgItemText(IDC_EDIT1,m_value); return CDialog::DestroyWindow(); } 然后你可以像这样使用它: CMyDialog dlg; dlg.SetValue("stackoverflow"); dlg.DoModal(); CString response = dlg.GetValue(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |