VC6.0打开、保存文件对话框和浏览文件夹对话框

一。打开文件夹:

1。CFileDialog实现

 CFileDialog hFileDlg(true,NULL ,  NULL,   OFN_FILEMUSTEXIST | OFN_READONLY | OFN_PATHMUSTEXIST,  TEXT("驱动文件 (*.sys)|*.sys|所有文件(*.*)|*.*|"),  NULL);
 if(hFileDlg.DoModal() == IDOK)
 {
  m_path = hFileDlg.GetPathName();
  UpdateData(FALSE);
 }

VC6.0打开、保存文件对话框和浏览文件夹对话框_第1张图片
 
VC6.0打开、保存文件对话框和浏览文件夹对话框_第2张图片
 

2。API实现


 OPENFILENAMEA ofn;       
 char szFile[260];       
 
 ZeroMemory(&ofn, sizeof(ofn));
 ofn.lStructSize = sizeof(ofn);
 ofn.hwndOwner = NULL;
 ofn.lpstrFile = szFile;
 ofn.lpstrFile[0] = '\0';
 ofn.nMaxFile = sizeof(szFile);
 ofn.lpstrFilter = "音频文件\0*.wma\0";
 ofn.nFilterIndex = 1;
 ofn.lpstrFileTitle = NULL;
 ofn.nMaxFileTitle = 0;
 ofn.lpstrInitialDir = NULL;
 ofn.Flags = 0;
 
 
 if (GetOpenFileNameA(&ofn)==FALSE) 
  return S_FALSE;
 
 CString c_save_path=ofn.lpstrFile;

二、保存文件

同上,只不过将“ CFileDialog hFileDlg(true,NULL ”改为“ CFileDialog hFileDlg(false,NULL ”,或者将GetOpenFileNameA改为GetSaveFileNameA,即可。

三、浏览文件夹对话框

//回调函数
int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
    if(uMsg==BFFM_SELCHANGED||uMsg==BFFM_INITIALIZED)
    {
        if(uMsg==BFFM_INITIALIZED)
        {
            ::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,
                LPARAM(lpData));
        }
    }
    return 0;
}

 
 TCHAR chPath[255]; //用来存储路径的字符串
 CString strPath = "";
 BROWSEINFO bInfo;
 GetModuleFileName(NULL,chPath,MAX_PATH);
 strPath=chPath;
 ZeroMemory(&bInfo, sizeof(bInfo));
 bInfo.hwndOwner = m_hWnd;
 bInfo.lpszTitle = _T("请选择路径: ");     
 bInfo.ulFlags   = BIF_RETURNONLYFSDIRS|BIF_EDITBOX;
 bInfo.lpfn      = BrowseCallbackProc;
 bInfo.lParam    = (LPARAM)strPath.GetBuffer(strPath.GetLength());

 LPITEMIDLIST lpDlist; //用来保存返回信息的IDList
 lpDlist = SHBrowseForFolder(&bInfo) ; //显示选择对话框
 if(lpDlist != NULL)  //用户按了确定按钮
 {
  SHGetPathFromIDList(lpDlist, chPath);//把项目标识列表转化成字符串
  strPath = chPath; //将TCHAR类型的字符串转换为CString类型的字符串
  m_save_path=strPath;
  UpdateData(FALSE);
 }

你可能感兴趣的:(VC6.0打开、保存文件对话框和浏览文件夹对话框)