问题1.我想将生成的文件直接保存在工程文件夹里,文件名不能用绝对路径,因为我希望这个工程文件夹无论拷贝到哪里,程序都可以正常运行。
问题2. 我想删除特定文件夹中的某一类型的数据,比如说删除工程文件夹中的bmp文件,应该怎样做?

解决方案 »

  1.   

    1.GetModuleFileName();得到exe路径,然后剪裁该路径,然后保存文件和exe同级。load的时候和保存的时候路径的获取方法一样。2. CFileFind::FindFile/FindNextFile()找到所有的.bmp文件,然后调用DeleteFile();删除,或者写个bat批处理文件,del *.bmp
      

  2.   

    TCHAR szPhotoPath[PM_MAX_PATH];
    GetModuleFileName(NULL, szPhotoPath, sizeof(szPhotoPath));
    *(strrchr(szPhotoPath, '\\') + 1) = NULL;
      

  3.   

    获取文件路径
    CString AppGetFileName(HANDLE hProc=INVALID_HANDLE_VALUE,HMODULE hMod=NULL,DWORD dwMaxLen=MAX_PATH);
    CString C_HQCGlobalData::AppGetFileName(HANDLE hProc,HMODULE hMod,DWORD dwMaxLen)
    {
    TCHAR* tchFPN=new TCHAR[dwMaxLen+1];
    DWORD dwLen=0;
    if(hProc==INVALID_HANDLE_VALUE || !hProc)
    dwLen=GetModuleFileNameW(hMod,tchFPN,dwMaxLen);
    else
    {
    ......
    }
    tchFPN[dwLen]='\0';
    if(tchFPN[0]>='a' && tchFPN[0]<='z')//修改盘符为大写字母
    tchFPN[0]-=0x20;
    CString strFPN=tchFPN;
    delete[] tchFPN; tchFPN=NULL;
    return strFPN;
    }//获取文件列表
    CString FileFindFileNameList(CString strFPath,CString strFName=_T("*.*"),CString strNameSep=_T("\t"));
    CString C_HQCGlobalData::FileFindFileNameList(CString strFPath,CString strFName,CString strNameSep)
    {
    if(strFPath.IsEmpty()) return _T("");
    if(strFPath.Right(1)!='\\') strFPath+='\\';
    if(strFName.IsEmpty()) strFName=_T("*.*");
    if(strNameSep.IsEmpty()) strNameSep=_T("\t"); WIN32_FIND_DATAW fd;
    HANDLE hFind=::FindFirstFileW(strFPath+strFName,&fd);
    if(hFind==INVALID_HANDLE_VALUE) return _T(""); CString strList;
    do
    {
    strList+=CString(fd.cFileName)+strNameSep;
    }while(::FindNextFileW(hFind,&fd));
    ::FindClose(hFind);
    return strList;
    }