在mfc中如何创建一个目录,并且如何把一个文件移动到其他地方

解决方案 »

  1.   

    //生成保存语音留言个自动应答信息的文件夹
    TCHAR di[32];
    TCHAR pa[MAX_PATH];
    ::_splitpath(__argv[0],di,pa,NULL,NULL);
    m_strWorkPath.Format("%s%siph\\",di,pa);
    if(-1==::GetFileAttributes(m_strWorkPath))
    {
    ::CreateDirectory(m_strWorkPath,NULL);
    }/*
    函数:文件移动、拷贝shell操作
    */
    void CIPPhoneDlg::OnSaveOp(BOOL m_bSorC)
    {
        CString m_strRDir;
    LPMALLOC pMalloc;
    BROWSEINFO bi;
        CString pszTemp;
    if(SUCCEEDED(SHGetMalloc(&pMalloc)))
    {
    ZeroMemory(&bi,sizeof(bi));
    char pszDirName[MAX_PATH];
    LPITEMIDLIST pidl;
    bi.hwndOwner = ::AfxGetMainWnd()->GetSafeHwnd();
    bi.pidlRoot = NULL;
    bi.pszDisplayName = pszDirName;
    bi.lpszTitle = _T("选择保存的目录");
    bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
    bi.lpfn = NULL;
    bi.lParam = 0;

    if((pidl = ::SHBrowseForFolder(&bi)) != NULL)
    {
    if (::SHGetPathFromIDList(pidl, pszDirName))


    pszTemp=pszDirName;

    }
    pMalloc->Free(pidl);
    }
    pMalloc->Release();
    }

    /////////////////////////////////////////////////////
    SHFILEOPSTRUCT lpFileOp;
    lpFileOp.hwnd=::AfxGetMainWnd()->GetSafeHwnd();

    if(m_bSorC)
    {
    lpFileOp.wFunc=FO_COPY;
    }
    else
    {
    lpFileOp.wFunc=FO_MOVE;
    }
    for(int ii=0;ii<m_listVMB.GetItemCount();ii++)
    {   int iState;
    iState=m_listVMB.GetItemState(ii,LVIS_SELECTED);
    if(iState!=0)
    {
    CString str;
    str=m_listVMB.GetItemText(ii,2);

    str.Replace(":","_");
    str+=".wav";
    CString path=m_strWorkPath+"vmailbox\\";
    path+=str;

    str=path;            

    char dir[256];
    sprintf(dir,"%s%c",str,NULL);
    lpFileOp.pFrom=dir;              
    lpFileOp.pTo=pszTemp;              
    lpFileOp.fFlags=FOF_ALLOWUNDO;
    lpFileOp.fAnyOperationsAborted=TRUE;     
    lpFileOp.hNameMappings=NULL;
    lpFileOp.lpszProgressTitle=NULL;
    int rval=SHFileOperation(&lpFileOp);
    if(rval==0)
    {
    if(lpFileOp.fAnyOperationsAborted==TRUE)
    {
    MessageBox("已经取消了操作","提示信息",MB_OK); 
    }

    }
    }
    }
    }