MFC中想实现打开文件或文件夹,该怎么实现呢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC中想实现打开文件或文件夹,该怎么实现呢相关的知识,希望对你有一定的参考价值。

目的只是通过选择得到一个文件/文件夹的路径,不想写成文件和文件夹2个按钮,有什么方法么?

把"通过选择得到一个文件/文件夹的路径" 这些代码实现 写到某个函数里,不是写到按钮实现的函数里就行了。例如:

【以下代码中 filePathFile就是你想要的路径】
在主体函数中:
CFileDialog *lpszOpenFile; //定义一个CfileDialog对象
//生成一个对话框
lpszOpenFile = new CFileDialog
(TRUE,"abc.txt","",OFN_FILEMUSTEXIST |OFN_HIDEREADONLY , "文件类型(*.txt)|*.txt|所有文件(*.*)|*.*|");

if(lpszOpenFile->DoModal() == IDOK )//假如点击对话框确定按钮

filePathName = lpszOpenFile->GetPathName();//得到打开文件的路径



if(!file.Open(filePathName,CFile::modeRead))

MessageBox("can not open file!");
return;
参考技术A

SHBrowserForFolder函数可以

使用BIF_BROWSEINCLUDEFILES标识

typedef struct _browseinfo 
    HWND hwndOwner;
    PCIDLIST_ABSOLUTE pidlRoot;
    LPTSTR pszDisplayName;
    LPCTSTR lpszTitle;
    UINT ulFlags;
    BFFCALLBACK lpfn;
    LPARAM lParam;
    int iImage;
 BROWSEINFO, *PBROWSEINFO, *LPBROWSEINFO;

ulFlags

Flags specifying the options for the dialog box. This member can include
zero or a combination of the following values.


BIF_BROWSEINCLUDEFILES

Version 4.71

. The
browse dialog box will display files as well as folders.

本回答被提问者和网友采纳
参考技术B 二合一的话,不是很好弄。

方法和思路很多,举个栗子吧:
重写CFileDialog的回调函数,回调函数中重写IDOK按钮的消息响应,如果选择的是文件夹,则返回文件夹路径。
这应该是最简单的实现方法,不过里面有一个问题,就是对CFileDialog的Get函数会有问题。如果要更合理的实现,只能重载CFileDialog实现更好。

利用MFC的CFtpConnection类实现递归下载文件夹

一、用到的CInternetSession、CFtpConnection类的接口

二、编码实现

/*
参数说明:
remotefile 要下载的ftp目录或文件,如"/杭州/滨江/五水共治.rar"
localpath 保存到本地的目录,如"D:\\Download"
isDir 指明要下载的是文件还是文件夹
ftpaddr ftp服务器地址
username   登陆ftp服务器的用户名
ftpPass 登陆f密码
/
BOOL DownloadFromFTP(CString remotepath,CString localpath,BOOL isDir,CString ftpaddr,CString username,CString password,int port)
{
int index = remotepath.ReverseFind(’/’);
if (index == -1)
{
return FALSE;
}
CString remotefile = remotepath.Mid(index+1,remotepath.GetLength());
CInternetSession sess(_T(“Download Files Session”));
CFtpConnection
pFtpCon = NULL;
try
{
pFtpCon = sess.GetFtpConnection(ftpaddr,username,password,port);
if (pFtpCon == NULL) //如果连接失败
{
return FALSE;
}
CFtpFileFind ftpFinder(pFtpCon);
BO

以上是关于MFC中想实现打开文件或文件夹,该怎么实现呢的主要内容,如果未能解决你的问题,请参考以下文章

在 MFC C++ 中打开对话框

mfc通过MapWinGIS控件读取shp文件(通过#import实现)

excel中想实现使用Python代替VBA,请问应该怎么做

MFC中怎样实现通过点击按钮而打开对话框选择文件,并将选择的txt文件内容导入到Listcontrol控件指定的列中。

在c++的控制台程序中想用mfc的类如Cstring怎么办啊

如何在MFC中让一个按钮实现打开文件(弹出选择文件窗口)的功能?