CFileDialog filedlg(FALSE,NULL,NULL,OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT | OFN_CREATEPROMPT,
"(*.DAT)|*.DAT||",NULL);LPTSTR charfilename = "1111"; //设置出现在文件名Edit框中的默认文件名
charfilename = strFileName.GetBuffer(strFileName.GetLength());//filedlg.m_ofn.lpstrFile  = charfilename; //设置默认文件名失败
filedlg.m_ofn.lpstrDefExt    = "DAT";
filedlg.m_ofn.lpstrTitle     = "导出到文件";

if (filedlg.DoModal() == IDCANCEL )  /////执行到这句出错
{
return;
}
代码如上,若没有filedlg.m_ofn.lpstrFile= charfilename;则执行正常,若有则
出错,请问如何设置出现在文件名Edit框中的默认文件名

解决方案 »

  1.   

    CString strFileName;
    LPTSTR pszfilename=strFileName.GetBuffer(_MAX_PATH);
    memset(pszfilename,0,_MAX_PATH);
    lstrcpy(pszfilename,"default filename");
    filedlg.m_ofn.lpstrFile  = pszfilename; //设置默认文件名失败
    filedlg.m_ofn.nMaxFile =_MAX_PATH;
    filedlg.m_ofn.lpstrDefExt    = "DAT";
    filedlg.m_ofn.lpstrTitle     = "导出到文件";

    if (filedlg.DoModal() == IDCANCEL )  /////执行到这句出错
    {
    return;
    }
    strFileName.ReleaseBuffer();
      

  2.   

    unsigned char Filter[]="你的文件(yourfile.txt)|yourfile.txt||";
        CFileDialog dlgopen(true,0,0,OFN_HIDEREADONLY|OFN_FILEMUSTEXIST,
    (LPCTSTR)Filter,NULL);
    if(dlgopen.DoModal()==IDOK)
    {
    m_filename=dlgopen.GetPathName();
    FileTitle=dlgopen.GetFileName();
    //ComputePeaceSize();
    //AfxMessageBox(FileTitle,MB_OK,0);
    }
    else
    {
    MessageBox("所要打开的文件无法打开。");
    return;
    }
        SetDlgItemText(IDC_FILENAME,m_filename);
        SetDlgItemText(IDC_EDIT,_T(""));
    ComputePeaceSize();
    Invalidate(true);
    RedrawWindow();
      

  3.   

    两位说得好象不对
    1.只比我多了一个设置,filedlg.m_ofn.nMaxFile =_MAX_PATH;
    我考到程序中,还是原先那样出错
    2.SetDlgItemText(IDC_FILENAME,m_filename);
        SetDlgItemText(IDC_EDIT,_T(""));
    是干什么?
    我要的是在dlg出现前设置出现在文件名Edit框中的默认文件名,然后dlg.
    Domodal()之后又图片就行!
      

  4.   

    我调试过了,不只比你多了一个设置filedlg.m_ofn.nMaxFile =_MAX_PATH;
    还有
    CString strFileName;
    LPTSTR pszfilename=strFileName.GetBuffer(_MAX_PATH);
    memset(pszfilename,0,_MAX_PATH);
    lstrcpy(pszfilename,"default filename");
    filedlg.m_ofn.lpstrFile  = pszfilename; 可能strFileName;和你的重名了,改个名试试,我vc。net下成功的呀
      

  5.   

    同意水银,先#define _MAX_PATH   255
    CString strFileName;
    LPTSTR pszfilename=strFileName.GetBuffer(_MAX_PATH);
    memset(pszfilename,0,_MAX_PATH);
    lstrcpy(pszfilename,"default filename");
    filedlg.m_ofn.lpstrFile  = pszfilename; //设置默认文件名失败
    filedlg.m_ofn.nMaxFile =_MAX_PATH;
    filedlg.m_ofn.lpstrDefExt    = "DAT";
    filedlg.m_ofn.lpstrTitle     = "导出到文件";
    if (filedlg.DoModal() == IDCANCEL )  /////执行到这句出错
    {
    return;
    }
    strFileName.ReleaseBuffer();
    可能是你字符转换有问题吧
      

  6.   

    谢谢水银兄、artherx2002积极响应