zoukankan      html  css  js  c++  java
  • MFC_CFileDialog_选择单一文件

    场景

    • 选择单一文件

    技术点

    • CFileDialog
    CFileDialog::CFileDialog(
        BOOL bOpenFileDialog, 
        LPCTSTR lpszDefExt = NULL, 
        LPCTSTR lpszFileName = NULL, 
        DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );
        
    参数意义如下:
    
    bOpenFileDialog 为TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框。
    
    lpszDefExt 指定默认的文件扩展名。
    
    lpszFileName 指定默认的文件名。
    
    dwFlags 指明一些特定风格。
    
    lpszFilter 是最重要的一个参数,它指明可供选择的文件类型和相应的扩展名。参数格式如:
     
    _T("Image Files(*.jpg;*.png;*.bmp)|*.jpg;*.png;*.bmp|All Files (*.*)|*.*||")
    
    
    文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。
    

    代码

    void CMFCClistDlg::GUI_Add_Check_Dir()
    {
        CFileDialog dlg(TRUE, _T("*.txt"),
    		NULL, 
    		OFN_ALLOWMULTISELECT | OFN_HIDEREADONLY | OFN_FILEMUSTEXIST,
    		_T("conf Files(*.ini;*.txt)|*.ini;*.txt|All Files (*.*)|*.*||"),
    		NULL);
    	dlg.m_ofn.lpstrTitle = _T("选择字典");
    	CString filename;
    	vector<CString> vecFilePaths;
    	if (dlg.DoModal() == IDOK)
    	{
    		POSITION fileNamesPosition = dlg.GetStartPosition();
    		while (fileNamesPosition != NULL)
    		{
    
    
    			// filename 是获取得文件名
    			filename = dlg.GetNextPathName(fileNamesPosition);
    			vecFilePaths.push_back(filename);
    		}
    	}
    	// 计算文件路径是否为空,如果为空就是没有选择文件
    	int count = vecFilePaths.size();
    	if (count == 0)
    		MessageBox(_T("没有选择文件"), NULL, MB_OK | MB_ICONQUESTION);
    
    
    
    	// 把变量内容更新到对话框
    	UpdateData(FALSE);
    }
    

    参考

    MFC 中CFileDialog的用法

    https://blog.csdn.net/liuwumiyuhuiping/article/details/7348591

  • 相关阅读:
    CPU运行原理
    ucore代码分析
    ThreadLocal是否会导致内存泄露
    2018 多校联合训练 4
    2018 多校联合训练 3
    2018 牛客多校 4
    2018 牛客多校 3
    2018 牛客多校 2
    2018 牛客多校 1
    2018 多校联合训练 2
  • 原文地址:https://www.cnblogs.com/17bdw/p/10275932.html
Copyright © 2011-2022 走看看