MFC中想实现打开文件或文件夹,该怎么实现呢
3个回答
展开全部
把"通过选择得到一个文件/文件夹的路径" 这些代码实现 写到某个函数里,不是写到按钮实现的函数里就行了。例如:
【以下代码中 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;
}
【以下代码中 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;
}
展开全部
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.
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
二合一的话,不是很好弄。
方法和思路很多,举个栗子吧:
重写CFileDialog的回调函数,回调函数中重写IDOK按钮的消息响应,如果选择的是文件夹,则返回文件夹路径。
这应该是最简单的实现方法,不过里面有一个问题,就是对CFileDialog的Get函数会有问题。如果要更合理的实现,只能重载CFileDialog实现更好。
方法和思路很多,举个栗子吧:
重写CFileDialog的回调函数,回调函数中重写IDOK按钮的消息响应,如果选择的是文件夹,则返回文件夹路径。
这应该是最简单的实现方法,不过里面有一个问题,就是对CFileDialog的Get函数会有问题。如果要更合理的实现,只能重载CFileDialog实现更好。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询