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

目的只是通过选择得到一个文件/文件夹的路径,不想写成文件和文件夹2个按钮,有什么方法么?... 目的只是通过选择得到一个文件/文件夹的路径,不想写成文件和文件夹2个按钮,有什么方法么? 展开
 我来答
小刺猬001
2014-10-16 · TA获得超过729个赞
知道小有建树答主
回答量:1087
采纳率:73%
帮助的人:281万
展开全部
把"通过选择得到一个文件/文件夹的路径" 这些代码实现 写到某个函数里,不是写到按钮实现的函数里就行了。例如:

【以下代码中 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;
}
intehel
2014-10-16 · TA获得超过1293个赞
知道大有可为答主
回答量:1601
采纳率:100%
帮助的人:1764万
展开全部

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.

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bhtzu
2014-10-16 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4184万
展开全部
二合一的话,不是很好弄。

方法和思路很多,举个栗子吧:
重写CFileDialog的回调函数,回调函数中重写IDOK按钮的消息响应,如果选择的是文件夹,则返回文件夹路径。
这应该是最简单的实现方法,不过里面有一个问题,就是对CFileDialog的Get函数会有问题。如果要更合理的实现,只能重载CFileDialog实现更好。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式