帮我看看阿,把MessageBox去掉就没事了,但我想跳出提示对话框后再关闭子窗口。
BOOL CMy002Doc::OnOpenDocument(LPCTSTR lpszPathName)  //  ***  打开文件  ***
{
//检查最近打开文件是否还存在
    CFileFind finder;
    if( !finder.FindFile(lpszPathName) )
    {
MessageBox(NULL,"该文件已不存在!","错误提示",MB_ICONINFORMATION | MB_OK);
return FALSE;
    
}
pathname_dib=lpszPathName;  // 保存原始文件路径  CFile file;
  file.Open(pathname_dib, CFile::modeRead | CFile::shareDenyWrite, NULL); // 调用ReadDIBFile()读取图像->全局函数中,成功返回DIB的句柄,否则返回NULL。
    my_DIB = ::ReadDIBFile(file);

if (my_DIB != NULL)
InitDIBData();  // 初始化DIB

return TRUE;
}

解决方案 »

  1.   

    问题应该不在MessageBox,崩溃是什么意思?对话框有没有弹出来,还是弹出来后程序就退出了。
    是不是多线程的。
      

  2.   

    问题已解决!
    后来仔细对比其他程序后发现要在ChildFrame类中重新加载虚函数:void CChildFrame::ActivateFrame(int nCmdShow) ,在那里对子窗口最大化,如果直接在BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)里对子窗口作最大化就会出错,运行后跳出“终止、重试、忽略”的对话框。