dialog.doModal()是调用对话框,可现在我是要对对话框操作阿。照理应该很简单的,目标就是:
主对话框中按read按钮,出现一个新的对话框,对话框中有一个进度条。然后读取指定的文件,进度由进度条反映。题外话,感觉win编程好复杂哦,ms都是聪明人,象在整我们似的,偏要多花一年工夫来浪费在了解各个功能上CReadDialog ReadDlg;ReadDlg.m_strFileName = m_strFileName;
ReadDlg.DoModal();
ReadDlg.ReadMetFile();
...
...
void CReadDialog::ReadMetFile()
{
if (m_strFileName == "")
{
AfxMessageBox("File Empty");
return;
}
else
{
m_ProgressRead.SetRange(0,100);
m_ProgressRead.SetPos(0);
AfxMessageBox("thread begins");
CWinThread* pThread = AfxBeginThread(LoadMetFile,(LPVOID*)this);
}}UINT LoadMetFile(LPVOID pParam)
{
     CReadDialog *pDlg = (CReadDialog *)pParam;
     pDlg->m_ProgressRead.SetPos(50);     return 0;
}

解决方案 »

  1.   

    DoModal执行就显示对话框,等DoModal返回,对话框已经咯屁了,所以你这样做不对。你的ReadMetFile应该在CReadDialog里面调用,比如在CReadDialog::OnInitDialog返回之前调用。或者ReadDlg就用非模态对话框。
      

  2.   

    果然,不过我原来是在DOModal()前定义的,为什么OnInitDialog返回之前就可以了呢?
      

  3.   

    DoModal结束之后,虽然ReadDialog对象还在,但对话框窗口已经销毁了。更别说里面的m_ProgressRead窗口(指窗口对象,不是类对象)了。OnInitDialog返回之后,对话框窗口还在。当然可以了。