• 弹出打开/保存文件对话框 选择文件夹对话框


    打开/保存文件对话框:

    CFileDialog::CFileDialog(
            BOOL bOpenFileDialog, //为TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框
            LPCTSTR lpszDefExt = NULL, //默认的文件扩展名
            LPCTSTR lpszFileName = NULL, //默认的文件名
            DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, //设定风格
            LPCTSTR lpszFilter = NULL, //列出可供选择的文件类型和相应的扩展名
            CWnd* pParentWnd = NULL //父窗口句柄指针
    );

    (1)打开文件对话框

    static TCHAR szFilter[] =
        _T("Info Files (*.csv)|*.csv|")
        _T("Info Files (*.txt)|*.txt|")
        _T("Info Files (*.csv;*.txt)|*.csv;*.txt|");
    
    CFileDialog hFileDlg(TRUE,NULL,NULL,
    OFN_FILEMUSTEXIST | OFN_READONLY | OFN_PATHMUSTEXIST,
    szFilter,
    NULL);
    if(hFileDlg.DoModal() == IDOK)
    {
        m_path = hFileDlg.GetPathName();
        UpdateData(FALSE);
    }

    LPCTSTR lpszFilter 参数格式如:"Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc;*.xls|All Files (*.*)|*.*||";文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。

    创建文件对话框可以使用DoModal(),在返回后可以利用下面的函数得到用户选择:
    CString CFileDialog::GetPathName( ) 得到完整的文件名,包括目录名和扩展名如:c:/test/test1.txt
    CString CFileDialog::GetFileName( ) 得到完整的文件名,包括扩展名如:test1.txt

    // 单个稳健获取路径

    GetPathName()

    // 多个文件获取

    POSITION pos = dlg.GetStartPosition();

    while(pos != NULL)

    {

      m_path = dlg.GetNextPathName(pos);

    }

    (2)保存文件对话框

    把第一个参数设置为FALSE即可,其他与(1)类似。

    (3)选择文件夹对话框

    
    
        CString strPath;
    
        TCHAR szDir[MAX_PATH];
        BROWSEINFO bi;    
        bi.hwndOwner = this->m_hWnd;
        bi.pidlRoot = NULL;
        bi.pszDisplayName = szDir; // 此参数如为NULL则不能显示对话框
        bi.lpszTitle = _T("请选择目录");
        bi.ulFlags = BIF_STATUSTEXT | BIF_USENEWUI | BIF_RETURNONLYFSDIRS;
        bi.lpfn = NULL;
        bi.lParam = 0;
        bi.iImage = 0;
    
        ITEMIDLIST *pidl = SHBrowseForFolder(&bi); // 调用显示选择对话框
        if(pidl == NULL)
        {
            return;
        }
        // 取得文件夹路径到Buffer里
        if(!SHGetPathFromIDList(pidl,szDir))
        {
            return;
        }
        else
        {
            strPath = szDir; // 保存为CString
        }
    
    
  • 相关阅读:
    CSS3:三个矩形,一个宽200px,其余宽相等且自适应满铺
    pidera安装node.js(树莓派)
    深入JavaScript模块化编程
    c# 多显示器设置主屏幕(Set primary screen for multiple monitors)
    c# 获取移动硬盘信息、监听移动设备的弹出与插入事件
    C# 弹出USB外接硬盘(U盘)
    log4net 自定义Appender
    Scrum 思考
    监控浏览器关闭事件
    判断地图的点是否在面内 腾讯地图
  • 原文地址:https://www.cnblogs.com/sylar-liang/p/4122320.html
Copyright © 2020-2023  润新知