CFileDialog *FileLaodDlg =
new CFileDialog(TRUE, "","",OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT, szFilters, this);

if(FileLaodDlg->DoModal() == IDOK)
{
lpszPathName=FileLaodDlg->GetPathName();
}
else
return;
以上程序
会产生一个打开文件的对话框,当用鼠标右键点击文件时,整个程序就自知退出了.请问大家这是怎么回事,如何解决呢?

解决方案 »

  1.   

    用API试试,其实CFileDialog早就过了时的,很少有人用。
    OPENFILENAME ofn;       // common dialog box structure
    char szFile[260];       // buffer for file name
    HWND hwnd;              // owner window
    HANDLE hf;              // file handle// Initialize OPENFILENAME
    ZeroMemory(&ofn, sizeof(ofn));
    ofn.lStructSize = sizeof(ofn);
    ofn.hwndOwner = hwnd;
    ofn.lpstrFile = szFile;
    //
    // Set lpstrFile[0] to '\0' so that GetOpenFileName does not 
    // use the contents of szFile to initialize itself.
    //
    ofn.lpstrFile[0] = '\0';
    ofn.nMaxFile = sizeof(szFile);
    ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
    ofn.nFilterIndex = 1;
    ofn.lpstrFileTitle = NULL;
    ofn.nMaxFileTitle = 0;
    ofn.lpstrInitialDir = NULL;
    ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;// Display the Open dialog box. if (GetOpenFileName(&ofn)==TRUE) 
    {
       MessageBox(ofn.lpstrFile); // Show the File path
    }
      

  2.   

    一是你的程序是否处理了其它的消息(只有你本人知道)二.可能是此对话框的指针出现了问题,
    你不用指针试试.
    CFileDialog FileLaodDlg(TRUE, "","",OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT, szFilters, this);if(FileLaodDlg.DoModal() == IDOK)
    ....