刚刚在看师兄项目中的源码的时候,看了在主界面上菜单下“打开工程”的响应函数的头几行的代码如下。
经过测试,可知,上面几行代码的功能是打开我们比较熟悉的窗口,如下。
;
相信大家会比较熟悉这样的界面,因为我们无时无刻都在使用这样的功能:当点击某个软件中的菜单中“打开文件/工程”、“保存文件/工程”、”另存为“都回出现这样的界面。
所以,当我们自己当实现这样的功能时,只需要这几行代码即可,然后进行后续的处理。
CFileDialog dlg(TRUE,NULL,_T(" "),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("(*.XML)|*.XML|All Files(*.*)|*.*||"),AfxGetMainWnd());
CString StrFolder;
dlg.DoModal();//在这里,可以加一个判断就更加完善些,如下
//if(Dlg.DoModal() != IDOK)//是否打开成功
//MessageBox("打开失败",NULL,MB_OK);
StrFolder = dlg.GetPathName();//得到完整的文件名,包括目录名和扩展名
下面就给大家介绍下第一条语句中各个参数的含义。
构造一个对象并提供相应的参数,构造函数原型如下:
CFileDialog Dlg( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );
各个参数的意义说明如下:
- 第一个参数: bOpenFileDialog 为TRUE则显示打开文件对话框,为FALSE则显示保存文件对话框。
- 第二个参数: lpszDefExt 指定默认的文件扩展名。
- 第三个参数: lpszFileName 指定默认的文件名。
- 第四个参数:dwFlags 指明一些特定风格。
- 第五个参数:lpszFilter 是最重要的一个参数,它指明可供选择的文件类型和相应的扩展名。
参数格式如:
“Chart Files (.xlc)|.xlc|Worksheet Files (.xls)|.xls|Data Files (.xlc;.xls)|.xlc; .xls|All Files (.)|.||”
说明:文件的类型说明和扩展名间用’|’分隔,同种类型的文件扩展名间用’;’分隔,每种文件类型间用’|’分隔,末尾用’||’指明。- 第六个参数:pParentWnd 为父窗口指针。
下面列出几个CFileDialog类的成员函数,我们可以使用它们获得文件对话框中的各种选择。
GetFileExt():获得选定文件的后缀名。
GetFileName():获得选定文件的名称,包括后缀名。
GetFileTitle():获得选定文件的标题,即不包括后缀名。
GetFolderPath():获得选定文件的目录。
GetNextPathName():获得下一个选定的文件的路径全名。
GetPathName():获得选定文件的路径全名。
GetReadOnlyPref():获得是否“以只读方式打开”。
GetStartPosition():获得文件名列表中的第一个元素的位置。