我用VC6建了一个有分割条的单文档应用程序,并用向导建立了一个对话框类CFindDlg,并在该对话框上设置了一个编辑框用来输入字符串,编辑框对应的成员变量为CString类的m_find,
    在工具条上设了一个按钮,消息处理设在CMyView类中,用来点击弹出对话框
void CMyView::OnButton32771() //消息处理函数
{
CFindDlg m_FindDlg;
m_FindDlg.DoModal  //DoModal用来创建模态话框
m_FindDlg.m_find; //m_find 返回不了对话框中编辑框数据
}    如果消息处理函数设在主框架CMainFrame类中,或设在没有分割条的单文档程序CMyView类之中就没有问题,我的问题是如果把消息处理设在我程序的CMyView类中,m_find就不能收到编辑框中的数据,为什么呀,想研究的可以提供程序.

解决方案 »

  1.   

    CFindDlg m_FindDlg;
    m_FindDlg.DoModal  // 在这个对话框退出之前是不会执行到下一条语句的
    m_FindDlg.m_find;
      

  2.   

    可以的啊,demo:
    http://www.xinyitech.com/software/testsplitter.rar
    msn:[email protected]
      

  3.   

    回复mynamelj(夏娃的诱惑):m_FindDlg.DoModal  //执行到这里会弹出对话框,我输入字符串后按确定退出对话框
    m_FindDlg.m_find;  //在这里设断点查看还是没有数据回复wenbaby(雯贝贝):
    程序现在就发到你邮箱,帮我调试一下看看有什么问题,谢谢先
      

  4.   

    mynamelj(夏娃的诱惑):我把同样的消息处理函数设在主框架CMainFrame类中就没有问题,真是奇怪
      

  5.   

    回复wenbaby(雯贝贝):
        你发来的程序确实可以收到对话编辑框数据,但我的程序我怎么查也查不出毛病原因,偶然一次用VC6打开你的程序后没有关掉,再打开了我的程序,从此我的程序就可以收到对话编辑框数据了,你的程序真的很神奇,原因待检查,估计是VC6的设置问题.
      

  6.   

    原因大致找到了:
        将我将以前的调试目录Debug删去,就正常了,应该是加对话框以前产生的调试文件对加对话框后的调试产生了影响.想必这也是VC6的一个BUG吧(我用的是VC6汉化版)
        所以在解决出现的编程问题时,如果反复检查自己的代码没有问题时就应该扩大思路解决问题.