c++ 文件对话框

1.MFC打开文件对话框

// 设置过滤器   
    TCHAR szFilter[] = _T("文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||");
    // 构造打开文件对话框   
    CFileDialog fileDlg(TRUE, _T("txt"), NULL, 0, szFilter, this);
    CString strFilePath;

    // 显示打开文件对话框   
    if (IDOK == fileDlg.DoModal())
    {
        // 如果点击了文件对话框上的“打开”按钮,则将选择的文件路径显示到编辑框里   
        strFilePath = fileDlg.GetPathName();
        AfxMessageBox(strFilePath);
    }

2.MFC保存文件框

// 设置过滤器   
    TCHAR szFilter[] = _T("文本文件(*.txt)|*.txt|Word文件(*.doc)|*.doc|所有文件(*.*)|*.*||");
    // 构造保存文件对话框   
    CFileDialog fileDlg(FALSE, _T("doc"), _T("my"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, this);
    CString strFilePath;

    // 显示保存文件对话框   
    if (IDOK == fileDlg.DoModal())
    {
        // 如果点击了文件对话框上的“保存”按钮,则将选择的文件路径显示到编辑框里   
        strFilePath = fileDlg.GetPathName();
        AfxMessageBox(strFilePath);
    }

3.选择文件夹

TCHAR           szFolderPath[MAX_PATH] = { 0 };
    CString         strFolderPath = TEXT("");

    BROWSEINFO      sInfo;
    ::ZeroMemory(&sInfo, sizeof(BROWSEINFO));
    sInfo.pidlRoot = 0;
    sInfo.lpszTitle = _T("请选择一个文件夹:");
    sInfo.ulFlags = BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE | BIF_EDITBOX;
    sInfo.lpfn = NULL;

    // 显示文件夹选择对话框  
    LPITEMIDLIST lpidlBrowse = ::SHBrowseForFolder(&sInfo);
    if (lpidlBrowse != NULL)
    {
        // 取得文件夹名  
        if (::SHGetPathFromIDList(lpidlBrowse, szFolderPath))
        {
            strFolderPath = szFolderPath;
            AfxMessageBox(strFolderPath);
        }
    }
    if (lpidlBrowse != NULL)
    {
        ::CoTaskMemFree(lpidlBrowse);
    }

4.打开文件对话框

TCHAR szFileName[MAX_PATH] = { 0 };
    OPENFILENAME openFileName = { 0 };
    openFileName.lStructSize = sizeof(OPENFILENAME);    //结构体大小
    openFileName.nMaxFile = MAX_PATH;  //存储文件路径名的缓冲大小
    openFileName.lpstrFilter = L"文本文件(*.txt)\0*.txt\0所有文件(*.*)\0*.*\0\0";   //过滤器
    openFileName.lpstrFile = szFileName;    //存储文件路径
    openFileName.nFilterIndex = 1; //过滤器的第1个类型,等于1时过滤器类型为“.txt”;等于2时过滤器类型是“所有文件”
    openFileName.lpstrTitle = L"打开";    //窗口标题
    openFileName.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;

    if (::GetOpenFileName(&openFileName))
    {
        AfxMessageBox(openFileName.lpstrFile);
    }

5.保存文件对话框

TCHAR szFileName[MAX_PATH] = { 0 };
    OPENFILENAME saveFileName = { 0 };
    saveFileName.lStructSize = sizeof(OPENFILENAME);    //结构体大小
    saveFileName.nMaxFile = MAX_PATH;  //存储文件路径名的缓冲大小 
    saveFileName.lpstrFilter = L"文本文件(*.txt)\0*.txt\0所有文件(*.*)\0*.*\0\0";   //过滤器
    saveFileName.lpstrFile = szFileName;    //存储文件路径
    saveFileName.nFilterIndex = 1;          //过滤器的第1个类型,等于1时过滤器类型为“.txt”;等于2时过滤器类型是“所有文件”
    saveFileName.lpstrTitle = L"保存";        //窗口标题
    saveFileName.Flags = OFN_FILEMUSTEXIST | OFN_EXPLORER;;

    if (::GetSaveFileName(&saveFileName))
    {
        AfxMessageBox(saveFileName.lpstrFile);
    }

你可能感兴趣的:(c++ 文件对话框)