MFC中打开文件夹的操作

MFC使用文件对话框类CFileDialog封装了对文件对话框的操作。CFileDialog类的构造函数原型如下:

explicit CFileDialog(

BOOL bOpenFileDialog,//创建对话框的类型,设为Ture为创建打开对话框,否则保存对话框

LPCTSTR lpszDefExt = NULL,//文件扩展名

LPCTSTR lpszFileName = NULL,//是否显示初始文件名

DWORD dwFlags = OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT,

LPCTSTR lpszFilter = NULL,//文件过滤器
   CWnd* pParentWnd = NULL, //文件对话框的父指针
   DWORD dwSize = 0,// OPENFILENAME结构体的大小
   BOOL bVistaStyle = TRUE//修改对话框的风格
);

文件对话框也是模态对话框,故在打开时也需要调用CFileDialog类的DoModal()成员函数。在打开文件对话框中点了“打开”或者在保存文件对话框中点了“保存”以后,我们可以使用CFileDialog类的成员函数GetPathName()获取选择的文件路径。

CFileDialog类的成员函数

GetFileExt():获得选定文件的后缀名。
GetFileName():获得选定文件的名称,包括后缀名。
GetFileTitle():获得选定文件的标题,即不包括后缀名。
GetFolderPath():获得选定文件的目录。
GetNextPathName():获得下一个选定的文件的路径全名。
GetPathName():获得选定文件的路径全名。
GetReadOnlyPref():获得是否“以只读方式打开”。
GetStartPosition():获得文件名列表中的第一个元素的位置。

需要获得文件的路径全名时,用GetPathName()得到的字符串是CString类,故需要先设置一个CString类,可保存文件路径的字符串。

void C软件1Dlg::OnBnClickedkaishi()
{
	CFileDialog fpdlg(TRUE);  //设为TRUE将创建打开对话框,否则将创建保存对话框
	CString lpszPathName = 0, szf;
	if (fpdlg.DoModal() == IDOK)
	{
		lpszPathName = fpdlg.GetPathName();//将文件字符串保存为在CString中
		int iEndPos = 0;
		iEndPos = lpszPathName.ReverseFind('\\');//返回CString对象中与要求的字符匹配的最后一个字符的索引,如果没有找到需要的字符则返回-1;
		fileHead = lpszPathName.Left(iEndPos);//实时获得文件框内容
		UpdateWindow();//更新窗口
		SetTimer(1, 300, NULL);   //setTimer()函数是一个定时器函数,时间一到就会自动调用Ontimer函数
	}                     // 1是计时器的名称,300为时间间隔 默认单位是毫秒,NUll使用ontime函数 
}
   注意,C软件1Dlg 类中含有函数OnBnClicked   我们想实现我们需要的功能,需进行重载,即void C软件1Dlg::OnBnClickedkaishi()  函数重载的符号为::


你可能感兴趣的:(MFC)