精华内容
下载资源
问答
  • MFC文件对话框的使用
    2018-11-03 22:04:08

    新建一个编辑框和一个按钮,给按钮添加clicked事件函数:

    void CXXXDlg::OnBnClickedBtn1()
    {
        // TODO: 在此添加控件通知处理程序代码
        // 设置过滤器
        TCHAR szFilter[] = _T("文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||");
        // 构造打开文件对话框   
        CFileDialog fileDlg(TRUE, _T("txt"), NULL, 0, szFilter, this);
        CString strFilePath;
        // 显示打开文件对话框   
        if (IDOK == fileDlg.DoModal())
        {
            // 如果点击了文件对话框上的“打开”按钮,则将选择的文件路径显示到编辑框里  
            strFilePath = fileDlg.GetPathName();
            SetDlgItemText(IDC_EDIT1, strFilePath);
        }
    }

    更多相关内容
  • MFC文件对话框

    2018-07-05 10:21:53
    文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统中经常见到这两种文件对话框。例如,很多编辑软件像记事本等都有“打开”选项,选择“打开”后会弹出一个对话框,让我们选择要打开文件的...
  • 本文讲解了MFC 通用对话框中的文件对话框类CFileDialog,及其常用成员函数的用法

    CFileDialog 类 封装了Windows通用文件对话框,Windows通用文件对话框提供了轻松实现与Windows标准一致的打开文件、保存文件、另存文件对话框的方法。

    当我们用CFileDialog类的构造函数生成一个对象后就修改m_ofn 结构体对象里的值,m_ofn的类型为OPENFILENAME。CFileDialog类构造函数的格式如下:

    CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );

    bOpenFileDialog 如果为值TRUE,构造打开对话框,反之为保存对话框

    lpszDefExt 用于确定文件的默认扩展名,如果为NULL,没有扩展名被插入到文件名中。

    lpszFileName 确定通用文件对话框中的文件名编辑框控件的初值,如果为NULL,编辑框为空,没有文件名。

    dwFlags 用于自定义通用文件对话框。有以下选项:

    一般情况下,使用缺省值即可。 

    lpszFilter 用于指定过滤文件的类型。

    pParentWnd 标识通用文件对话框的父窗口的指针。

    OPENFILENAME 结构体原型如下:

     lpstrFilter

     Pointer to a buffer containing pairs of null-terminated filter strings. The last string in the buffer must be terminated by two NULL characters.The first string in each pair is a display string that describes the filter (for example, "Text Files"), and the second string specifies the filter pattern (for example, "*.TXT"). To specify multiple filter patterns for a single display string, use a semicolon to separate the patterns (for example, "*.TXT;*.DOC;*.BAK"). A pattern string can be a combination of valid file name characters and the asterisk (*) wildcard character. Do not include spaces in the pattern string.The system does not change the order of the filters. It displays them in the File Types combo box in the order specified in lpstrFilter.If lpstrFilter is NULL, the dialog box does not display any filters.

    lpstrCustomFilter 

    Pointer to a static buffer that contains a pair of null-terminated filter strings for preserving the filter pattern chosen by the user. The first string is your display string that describes the custom filter, and the second string is the filter pattern selected by the user. The first time your application creates the dialog box, you specify the first string, which can be any nonempty string. When the user selects a file, the dialog box copies the current filter pattern to the second string. The preserved filter pattern can be one of the patterns specified in the lpstrFilter buffer, or it can be a filter pattern typed by the user. The system uses the strings to initialize the user-defined file filter the next time the dialog box is created. If the nFilterIndex member is zero, the dialog box uses the custom filter.If this member is NULL, the dialog box does not preserve user-defined filter patterns.If this member is not NULL, the value of the nMaxCustFilter member must specify the size, in TCHARs, of the lpstrCustomFilter buffer. For the ANSI version, this is the number of bytes; for the Unicode version, this is the number of characters.

     lpstrFile

    Pointer to a buffer that contains a file name used to initialize the File Name edit control. The first character of this buffer must be NULL if initialization is not necessary. When the GetOpenFileName or GetSaveFileName function returns successfully, this buffer contains the drive designator, path, file name, and extension of the selected file.If the OFN_ALLOWMULTISELECT flag is set and the user selects multiple files, the buffer contains the current directory followed by the file names of the selected files. For Explorer-style dialog boxes, the directory and file name strings are NULL separated, with an extra NULL character after the last file name. For old-style dialog boxes, the strings are space separated and the function uses short file names for file names with spaces. You can use the FindFirstFile function to convert between long and short file names. If the user selects only one file, the lpstrFile string does not have a separator between the path and file name.If the buffer is too small, the function returns FALSE and the CommDlgExtendedError function returns FNERR_BUFFERTOOSMALL. In this case, the first two bytes of the lpstrFile buffer contain the required size, in bytes or characters.

    lpstrFileTitle

    Pointer to a buffer that receives the file name and extension (without path information) of the selected file. This member can be NULL.

    lpstrInitialDir

    Pointer to a null terminated string that can specify the initial directory. The algorithm for selecting the initial directory varies on different platforms.

    要显示通用文件对话框,使用DoModal函数即可。DoModal函数的返回值为IDOK or IDCANCEL.如果用户在用文件对话框点击了OK按钮就返回IDOK,击了CANCELL按钮就返回IDCANCEL。

    CFileDialog 类还有以下成员函数:

     

     通用文件对话框示例

    1. 打开VS2017,新建一个MFC单文档程序。

    2. 在IDR_MAINFRAME菜单中,新建FileDialogTest菜单及子菜单,如下:

    3. 给“保存文件”子菜单添加事件处理程序:

    代码如下:

    void CFileDialogTestView::OnSaveFile()
    {
    	// TODO: 在此添加命令处理程序代码
    	CFileDialog fdlg(FALSE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,L"All files(*.txt)|*.TXT|*.JPG|*.PNG|*.BMP||" );
    	fdlg.DoModal();
    }

     按Ctrl+F5运行程序,点击FileDialogTest菜单下的“保存文件”子菜单,弹出通用文件对话框如下:

     通用文件对话框名称是“另存为”,缺省的路径为文档库。将代码修改如下:

    void CFileDialogTestView::OnSaveFile()
    {
    	// TODO: 在此添加命令处理程序代码
    	CFileDialog fdlg(FALSE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, L"All files(*.txt)|*.TXT|*.JPG|*.BMP||");
    	fdlg.m_ofn.lpstrTitle = L"Save File";
    	fdlg.m_ofn.lpstrInitialDir = L"D:\\360MoveData\\Users\\lys\\Documents";
    	fdlg.DoModal();
    }

    执行同样的操作,弹出通用文件对话框如下:

    给“另存文件”子菜单添加事件处理程序:

     代码如下:

    void CFileDialogTestView::OnSaveAsFile()
    {
    	// TODO: 在此添加命令处理程序代码
    	CFileDialog fdlg(FALSE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, L"All files(*.txt)|*.TXT|*.JPG|*.PNG|*.BMP||");
    	fdlg.m_ofn.lpstrTitle = L"Save File As";
    	fdlg.m_ofn.lpstrInitialDir = L"D:\\360MoveData\\Users\\lys\\Documents";
    	fdlg.DoModal();
    }

    按Ctrl+F5运行程序,点击FileDialogTest菜单下的“另存文件”子菜单,弹出通用文件对话框如下:

    给“打开文件”子菜单添加事件处理程序:

     代码如下:

    void CFileDialogTestView::OnOpenFile()
    {
    	// TODO: 在此添加命令处理程序代码
    	CFileDialog fdlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, L"All files(*.*)|*.*|*.JPG|*.PNG|*.BMP||");
    	fdlg.m_ofn.lpstrTitle = L"Open File";
    	fdlg.m_ofn.lpstrInitialDir = L"F:\\lesson\\Program\\c++\\MFC";
    	if (fdlg.DoModal() == IDOK)
    	{
    		CString str = fdlg.GetPathName();
    		MessageBox(str);
    		str = fdlg.GetFileName();
    		MessageBox(str);
    		str = fdlg.GetFileExt();
    		MessageBox(str);
    		str = fdlg.GetFileTitle();
    		MessageBox(str);
    		str = fdlg.GetFolderPath();
    		MessageBox(str);
    	}
    }

    按Ctrl+F5运行程序,点击FileDialogTest菜单下的“打开文件”子菜单,弹出通用文件对话框如下:

    点击【STL】C++标准程序库STL.pdf,再点击打开,弹出信息框,如下: 

    点击确定后,弹出第二个 信息框,如下:

    点击确定, 弹出第三个 信息框,如下:

     点击确定, 弹出第四个 信息框,如下:

     点击确定, 弹出第五个 信息框,如下:

    现将“保存文件”子菜单的事件处理代码,修改如下:

    void CFileDialogTestView::OnSaveFile()
    {
    	// TODO: 在此添加命令处理程序代码
    	//CFileDialog fdlg(FALSE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, L"All files(*.txt)|*.TXT|*.JPG|*.PNG|*.BMP||");
    	CFileDialog fdlg(FALSE);
    	fdlg.m_ofn.lpstrDefExt = L"txt";
    	fdlg.m_ofn.lpstrCustomFilter = L"*.txt";
    	fdlg.m_ofn.lpstrFilter = L"*.txt";
    	fdlg.m_ofn.lpstrTitle = L"Save File";
    	fdlg.m_ofn.lpstrInitialDir = L"D:\\360MoveData\\Users\\lys\\Documents";
    	fdlg.DoModal();
    }

    按Ctrl+F5运行程序,点击FileDialogTest菜单下的“保存文件”子菜单,弹出通用文件对话框如下:

    文件名编辑框内时空的,可否给fdlg.m_ofn.lpstrFile赋值,在上面代码中加入fdlg.m_ofn.lpstrTitle = L"Save File As";

    void CFileDialogTestView::OnSaveAsFile()
    {
    	// TODO: 在此添加命令处理程序代码
    	CFileDialog fdlg(FALSE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, L"All files(*.txt)|*.TXT|*.JPG|*.PNG|*.BMP||");
    	fdlg.m_ofn.nMaxFile = sizeof("myfile");
    	fdlg.m_ofn.lpstrFile = L"myfile";
    	fdlg.m_ofn.lpstrTitle = L"Save File As";
    	fdlg.m_ofn.lpstrInitialDir = L"D:\\360MoveData\\Users\\lys\\Documents";
    	fdlg.DoModal();
    }

     按Ctrl+F5运行程序,点击FileDialogTest菜单下的“保存文件”子菜单,结果出现如下情况:

     在上面代码中fdlg.m_ofn.lpstrFile = L"myfile";前加入fdlg.m_ofn.nMaxFile的赋值语句,如下:

    void CFileDialogTestView::OnSaveFile()
    {
    	// TODO: 在此添加命令处理程序代码
    	//CFileDialog fdlg(FALSE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, L"All files(*.txt)|*.TXT|*.JPG|*.PNG|*.BMP||");
    	CFileDialog fdlg(FALSE);
    	fdlg.m_ofn.lpstrDefExt = L"txt";
    	fdlg.m_ofn.lpstrCustomFilter = L"*.txt";
    	fdlg.m_ofn.lpstrFilter = L"*.txt";
    	fdlg.m_ofn.lpstrTitle = L"Save File";
    	fdlg.m_ofn.nMaxFile = sizeof("myfile");
    	fdlg.m_ofn.lpstrFile = L"myfile";
    	fdlg.m_ofn.lpstrInitialDir = L"D:\\360MoveData\\Users\\lys\\Documents";
    	fdlg.DoModal();
    }

    按Ctrl+F5运行程序,点击FileDialogTest菜单下的“保存文件”子菜单,结果如下:

     不再发生错误。结果表明,要给fdlg.m_ofn.lpstrFile赋值,必须先给fdlg.m_ofn.nMaxFile赋值,否则会出错。

    展开全文
  • MFC文件对话框打开多个文件

    千次阅读 2018-06-05 15:43:46
    参考:MFC打开文件对话框,选择多个文件 std::vector<std::string> &pathImage; CFileDialog fpDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT, L"(*.jpg;*.png;*.bmp;)|...

    参考:MFC打开文件对话框,选择多个文件

    std::vector<std::string> &pathImage;
    CFileDialog fpDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT, 
    		L"(*.jpg;*.png;*.bmp;)|*.jpg;*.png;*.bmp;|All File(*.*)||", NULL); //
    	
    	DWORD MAXFILE = 40000;//初始化空间大小,若超过初始化空间,程序fd.DoModal()会自己返回IDCANCEL值  
    	fpDlg.m_ofn.nMaxFile = MAXFILE;  
    	TCHAR * pc = new TCHAR[MAXFILE];//定义为T类型,可避免转换  
    	USES_CONVERSION;   
    	fpDlg.m_ofn.lpstrFile = pc;  
    	fpDlg.m_ofn.lpstrFile[0] = NULL;//对文件选择对话框初始化
    
    	std::string strImgPath;
    	if(IDOK == fpDlg.DoModal())
    	{
    		POSITION pos  = fpDlg.GetStartPosition(); 
    		while(pos)
    		{
    			CString imgPath = fpDlg.GetNextPathName(pos); 
    			strImgPath =(CStringA)imgPath;
    			pathImage.push_back(strImgPath);
    		}
    	}
    
    	delete[] pc;
    	pc=NULL;

    展开全文
  • 转::...选择单个文件对话框: CString strFile = _T(""); CFileDialog dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY, _T("Describe Files (*.jpg)|*.jpg|All Files (*.*)|*...

    转::https://www.cnblogs.com/zhqshome/p/7063730.html
    选择单个文件对话框:

    CString strFile = _T("");
    
    CFileDialog    dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY, _T("Describe Files (*.jpg)|*.jpg|All Files (*.*)|*.*||"), NULL);
    
    if (dlgFile.DoModal())
    {
         strFile = dlgFile.GetPathName();
    }

    选择多个文件对话框

    void CBugReportDlg::SelectFiles( vector<CString>& all_sel_files )
    {
        CFileDialog dlg(TRUE, _T("*.jpg"), NULL, OFN_ALLOWMULTISELECT|OFN_HIDEREADONLY | OFN_FILEMUSTEXIST, _T("Image Files(*.jpg)|*.jpg|"), NULL); 
        dlg.m_ofn.lpstrTitle = _T("选择图片"); 
        CString filename; 
        if(dlg.DoModal() == IDOK) 
        { 
            POSITION fileNamesPosition = dlg.GetStartPosition(); 
            while(fileNamesPosition != NULL) 
            { 
                filename = dlg.GetNextPathName(fileNamesPosition); 
                all_sel_files.push_back(filename);
            }   
        } 
    
    }

    选择文件夹
    CString CBugReportDlg::SelFilePath()
    {
    TCHAR szFolderPath[MAX_PATH] = {0};
    CString strFolderPath = TEXT(“”);

    BROWSEINFO      sInfo;  
    ::ZeroMemory(&sInfo, sizeof(BROWSEINFO));  
    sInfo.pidlRoot   = 0;  
    sInfo.lpszTitle   = _T("请选择处理结果存储路径");  
    sInfo.ulFlags   = BIF_RETURNONLYFSDIRS|BIF_EDITBOX|BIF_DONTGOBELOWDOMAIN;  
    sInfo.lpfn     = NULL;  
    
    // 显示文件夹选择对话框  
    LPITEMIDLIST lpidlBrowse = ::SHBrowseForFolder(&sInfo);   
    if (lpidlBrowse != NULL)  
    {  
        // 取得文件夹名  
        if (::SHGetPathFromIDList(lpidlBrowse,szFolderPath))    
        {  
            strFolderPath = szFolderPath;  
        }  
    }  
    if(lpidlBrowse != NULL)  
    {  
        ::CoTaskMemFree(lpidlBrowse);  
    }  
    
    return strFolderPath;  
    

    }

    展开全文
  • MFC——创建文件对话框

    千次阅读 2018-07-19 15:41:52
     MFC使用文件对话框类CFileDialog封装了对文件对话框的操作。CFileDialog类的构造函数原型如下: explicit CFileDialog(  BOOL bOpenFileDialog,  LPCTSTR lpszDefExt = NULL,  LPCTSTR lpsz...
  • VC_CFileOpen打开文件对话框中实现多选文件.visual c++
  • 由于项目需要,简单的扩展了MFC的CFileDialog类,传上来给需要的人使用,如遇到问题可联系博客http://blog.csdn.net/ardun_li。
  • MFC打开文件对话框选择文件
  • 内容索引:VC/C++源码,其它分类,MFC VC++基于mfc 实现对话框打开读取txt文件,显示在edit box 中,一个简单的MFC小例子,相信有不少朋友需要这个吧。
  • 选择目录对话框 //选择目录按钮 void CDcPackerDlg::OnBnClickedDecgen() { char szPath[MAX_PATH]; //存放选择的目录路径 CString str; ZeroMemory(szPath, sizeof(szPath)); BROWSEINFO bi; bi....
  • 本文实例为大家分享了MFC实现对话框编辑控件上拖拽文件的具体代码,供大家参考,具体内容如下 步骤 1、重载CEdit类 2、添加编辑框控件 首先,重载CEdit类,定义一个派生类CDragEdit类,并重载它的WM_CREATE方法,...
  • MFC文件选择对话框(支持多选)

    千次阅读 2019-09-18 23:10:41
    void CSelectDlg::OnButselect() { // TODO: Add your control notification handler code here //声明变量 ... //构造文件打开对话框 CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREA...
  • MFC文件夹对话框

    2021-07-26 14:29:33
    //// TRUE是“打开”对话框// FALSE是“另存为”对话框 int ret=dlg.DoModal(); if(ret==IDOK) { CString pathname=dlg.GetPathName(); //得到文件所在路径+文件名 CString filename=dlg.GetFileName(); //...
  • VS2013环境下,MFC基于对话框 利用CFile类存储txt文件
  • MFC对话框中显示PDF文件,含安装包,说明文档,对话框大小可自行调整,安装之后即可运行,非常简单
  • TRUE, // TRUE则显示打开对话框,FALSE则显示保存对话文件对话框。 NULL, // 默认的文件扩展名 NULL, // 默认的文件名 OFN_HIDEREADONLY, // 指明一些特定风格。 (默认OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT) ...
  • CColorDialog类封装了颜色对话框,此类允许您将颜色选择对话框合并到应用程序中。颜色对话框就像画家的调色板一样,可显示系统定义的颜色列表,用户可以从列表中选择或创建特定颜色。本文详细介绍了颜色对话框,并...
  • MFC 基于对话框_消息处理MFC 基于对话框_消息处理[var1]Windows 10基于对话框[var1][var1]新建【MFC_基于对话框_消息处理】的项目,这个文件的中的类继承自 CWinApp。主要是由InitInstance()函数实现的。// MFC_基于...
  • MFC代码 可以在对话框中根据路径选择相关的文件 并且可以获取cstring类型路径信息数据 方便获取有后续需要的信息数据
  • 本操作实现了在MFC中打开文件对话框,选择文件并显示文件的路径。 MFC使用文件对话框类CFileDialog封装了对文件对话框的操作。 下面列出几个CFileDialog类的成员函数,我们可以使用它们获得文件对话框中的各种选择。...
  • vs2010下,使用文件对话框,点击保存按钮无反应,代码如下: ![图片说明](https://img-ask.csdn.net/upload/201608/12/1470984283_412832.jpg)
  • 前面已经讲过文件对话框,通过文件对话框的GetPathName()成员函数可以获取文件路径。我们还可以通过文件浏览对话框获取文件路径。要显示浏览对话框,需通过API函数SHBrowseFolder,其语法格式如下: ...
  • 环境:C++ MFC VS2013,欢迎大家交流学习,也可以看博文,很详细http://blog.csdn.net/wgf5845201314/article/details/78175128
  • MFC弹出文件选择对话框、文件夹选择对话框 前提,在MFC项目中使用 文件选择对话框 参考该博客 文件夹选择对话框 CFolderPickerDialog dlg_folder; CString dir; if (dlg_folder.DoModal() == IDOK) { dir = dlg_...
  • 3.选择文件Browse: CFileDialog dlg(TRUE, L"txt", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, L"(*.txt)|*.txt||"); if (dlg.DoModal() == IDOK) { m_File = dlg.GetPathName(); UpdateData(FALSE);...
  • //22打开文件对话框 bool CGetFacesDlg::OpenFileFrame() //CGetFacesDlg为类名,自己可对应修改 {  CString filePath;  //采用了MFC提供的类CFileDialog  CFileDialog fileOpenDlg(TRUE, _T...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,665
精华内容 15,866
关键字:

mfc 文件对话框