mfc 打开文件目录

独自等待945 2017-10-20 09:48:53
请大]神教下我?其他网上教程都没有我的想要的效果。我需要类似电脑打开文件夹这种方式。MFC该如何实现呢?
...全文
727 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2017-11-29
  • 打赏
  • 举报
回复
引用 6 楼 xuddk727 的回复:
我看LZ的意思怕不是要实现一个资源管理器吧? http://www.360doc.com/content/14/0224/12/14089178_355247694.shtml
去看了一下发现非常落后的方法,居然是用路径逐个枚举文件的方式,而不是用 IShellFolder 来枚举,图标和显示名称都不用 SHGetFileInfo 来获取,而是硬生生自己拼接……
「已注销」 2017-10-24
  • 打赏
  • 举报
回复
NT5.x (2000/XP/2003) 用 GetOpenFileName/GetSaveFileName 选择打开/保存文件,用 SHBrowseForFolder 选择文件夹。 NT6.0+ (Vista/7/8/8.1/10) 用 COM 接口 IFileDialog 既可以选择文件也可以选择文件夹,而且选择文件夹比传统 SHBrowseForFolder 更方便。
许文君 2017-10-23
  • 打赏
  • 举报
回复
我看LZ的意思怕不是要实现一个资源管理器吧? http://www.360doc.com/content/14/0224/12/14089178_355247694.shtml
smwhotjay 2017-10-20
  • 打赏
  • 举报
回复
打开选择文件对话框,

VOID OnOpenSoundFile( HWND hDlg ) 
{
	HRESULT hr;

	static TCHAR strFileName[MAX_PATH] = TEXT(""); //static可以保存记录,到下次调用时可以获得上次的值
	static TCHAR strPath[MAX_PATH] = TEXT("");//可以记忆上次的文件路径

	// Setup the OPENFILENAME structure
	OPENFILENAME ofn = { sizeof(OPENFILENAME), hDlg, NULL,
		TEXT("Wave Files\0*.wav\0All Files\0*.*\0\0"), NULL,
		0, 1, strFileName, MAX_PATH, NULL, 0, strPath,
		TEXT("Open Sound File"),  //标题
		OFN_FILEMUSTEXIST|OFN_HIDEREADONLY //文件必须存在,不显示只读的文件
		, 0, 0,
		TEXT(".wav"), 0, NULL, NULL };


	// Display the OpenFileName dialog. Then, try to load the specified file
	if( TRUE != GetOpenFileName( &ofn ) )
	{
		//取消了选择框.
		return;
	}

	//按下了确定.strFileName保存了文件绝对路径
	//xxx.Load( strFileName );

}
上面是win32 的,下面是mfc的

CFileDialog FileDlg(FALSE);	//true表示文件打开对话框,false表示文件保存对话框




	CFileDialog mFileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
		"wav(*.wav)|*.wav|所有文件(*.*)|*.*|", NULL/*AfxGetMainWnd()*/);

CFileDialog mFileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
		"Wave 音频文件(wav)|*.wav|MP3 音频文件(mp3;mp2;mp1;mpa;mp3pro)|*.mp3;*.mp2|所有文件(*.*)|*.*|",
		NULL/*AfxGetMainWnd()*/);

//选择打开文件
 CFileDialog mFileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,
	"JPG(*.jpg)|*.jpg|位图文件(*.bmp)|*.bmp|所有文件(*.*)|*.*", NULL/*AfxGetMainWnd()*/);
 if(mFileDlg.DoModal()==IDOK)
 {
        m_strPathName=mFileDlg.GetPathName();	//路径
 	m_strFileName=mFileDlg.GetFileName();	//路径+文件名
 }


//选择保存文件的路径和文件名
	CFileDialog FileDlg(FALSE);
	CFileDialog FileDlg(FALSE,NULL,"shot.bmp",0,"位图文件(*.bmp)|*.bmp",NULL);
	CString strFileName;
	if(FileDlg.DoModal() == IDOK)
	{
		strFileName = FileDlg.GetPathName();
	}
	else
	{
		return 0;
	}

jyxuan94 2017-10-20
  • 打赏
  • 举报
回复
CFileDialog
独自等待945 2017-10-20
  • 打赏
  • 举报
回复
要这样子的怎么用MFC实现呢。我想在主对话框中建立一个BUTTON按钮,然后点击就出现这样的文件目录选择。
零隐 2017-10-20
  • 打赏
  • 举报
回复
现在都是用win7的了。。 你这是xp文件选择对话框吧。 旧得淘汰。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧