注册 登录
编程论坛 VC++/MFC

请大家帮助解决对话框里控件获取文本的问题

书侠客 发布于 2011-05-25 15:33, 841 次点击
只有本站会员才能查看附件,请 登录
这是原程序,为什么在一个对话框中不能获取另一个对话框中编辑框中的文本,用GetDlgItemText函数。
5 回复
#2
zhoufeng19882011-05-25 16:58
    //////////////////////////////////////////////////////////////////////////
    // 在调用完DoModal之后,程序就不会往下执行了。除非Dialog销毁。
   
// 而在Dialog销毁之后,你再去获取它的文本框控件,当然会出错了。
   
// 所以,你这行代码不应该加在这儿,应该加在消息处理中
给CTestDlg添加一个WM_CREATE消息响应函数,然后把你的代码放入其中即可。
例如:
程序代码:
int CInputDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CDialog::OnCreate(lpCreateStruct) == -1)
        return -1;
   
    // TODO: Add your specialized creation code here
    CString str;
    this->GetDlgItemText(IDC_EDIT1,str);  
    MessageBox(str);

    return 0;
}

#3
书侠客2011-05-26 12:39
我知道楼上说的这样行,我现在就是想研究模态对话框。为什么在要显示的模态对话框中的编缉框控件上关联上CString变量后,用取变量的方法就行,我知道我的程序有问题,就是不知道问题出现在哪?请高手帮忙,谢谢!下面是改后的程序,请指点(原程序在附件里)
void CTestDlg::OnButton1()
{
    // TODO: Add your control notification handler code here
    CString str;
    CInputDlg dlg;
    dlg.DoModal();
//    dlg.GetDlgItemText(IDC_EDIT1,str);   //这里为什么不能通过,是什么问题,请指教。
    str=dlg.m_edit1;                     //为什么把编辑框关联为CString的成员变量后就能行。(改成这个语句)
    MessageBox(str);
   
#4
书侠客2011-05-26 12:42
m_edit1为编辑框关联的CString成员变量。
#5
zhoufeng19882011-05-26 12:51
窗口销毁了,所对应的句柄就不可用。而窗口所对应的C++对象没有销毁。
故其的成员变量是可以访问的。
#6
书侠客2011-05-27 15:28
非常感谢,懂了,
1