CFile在DoModal的时候出了问题。
CFileDialog fileDlg(FALSE);
fileDlg.m_ofn.lpstrFileTitle = L"我的保存文件对话框";
fileDlg.m_ofn.lpstrFilter = L"Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0";
fileDlg.m_ofn.lpstrDefExt = L"txt";
if(IDSAVE == fileDlg.DoModal())
{
CFile file(fileDlg.GetFileName(), CFile::modeCreate | CFile::modeWrite);
file.Write("shangshangshang",strlen("shangshangshang"));
file.Close();
}
文件写不到硬盘上,为什么?

解决方案 »

  1.   

    if(IDSAVE == fileDlg.DoModal())IDSAVE??
    IDOK??IDSAVE是什么应该是IDOK
    然后继续
      

  2.   

    改如下

    CFileDialog fileDlg(FALSE);
    fileDlg.m_ofn.lpstrFilter = L"Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0";
    fileDlg.m_ofn.lpstrDefExt = _T("txt");
    if(IDOK == fileDlg.DoModal())
    {
    CFile file(fileDlg.GetFileName(), CFile::modeCreate | CFile::modeWrite);
    file.Write("shangshangshang",strlen("shangshangshang"));
    file.Close();
      

  3.   

    对不起,我一开始用的就是IDOK,不行。后来改成IDSAVE也不行,发帖的时候忘改回来了。
    好像不是IDOK的问题,3楼的fileDlg.m_ofn.lpstrDefExt = _T("txt");请问L“”和_T("")有什么区别吗?我改成_T("")也不成。你写的和我的是不是只有这两处不同?
      

  4.   

    _T(x)是一个宏,UNICODE为编译为Lx, 非UNICDOE编译为#define __T(x)      L ## x  ##的意思是将L跟x连起来