大多数windows运用程序都需要处理文件中的数据,所以需要一个接口打开和保存文件;比如,我们经常使用的word,可以看到非常标准的打开对话框,windows已经帮我们提供了很好的接口,我们会使用就好,我们主要介绍两种:
1,win32环境的api风格,代码如下:
- OPENFILENAME ofn;
- TCHAR szFileName[MAX_PATH] = _T("");
- ZeroMemory(&ofn, sizeof(ofn));
- ofn.lStructSize = sizeof(ofn);
- ofn.hwndOwner = hWnd; //父窗口句柄
- ofn.lpstrFilter = _T("Text Files (*.xml)\0*.xml\0All Files (*.*)\0*.*\0"); //打开的文件类型,这里以xml和所有文件为例
- ofn.lpstrFile = szFileName;
- ofn.nMaxFile = MAX_PATH;
- ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
- ofn.lpstrDefExt = _T("xml"); //默认的打开的文件类型
- ofn.lpstrInitialDir=_T(".\\"); //默认的打开的文件路径,这里以当前目录为例
- if(GetOpenFileName(&ofn))
- {
- //szFileName为获取的文件名
- // do something
- }
2,MFC环境的类的风格(或者说是C#或者VB中的控件风格),代码如下:
- CString StrFile;
- CString defExe("txt");
- CString defFileName("*.txt");
- CString defFilter("文本文档(*.txt)|*.txt|所有文件(*.*)|*.*|");
- CFileDialog dlg(true,defExe,defFileName,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,defFilter);
- dlg.m_ofn.lpstrInitialDir= _T(".\\");
- if(dlg.DoModal()==IDOK)
- {
- StrFile = dlg.GetPathName();
- // do something
- }
C#风格如下:
- OpenFileDialog openFileDialog=new OpenFileDialog();
- openFileDialog.InitialDirectory="c:\\";//注意这里写路径时要用c:\\而不是c:\
- openFileDialog.Filter="文本文件|*.*|C#文件|*.cs|所有文件|*.*";
- openFileDialog.RestoreDirectory=true;
- openFileDialog.FilterIndex=1;
- if (openFileDialog.ShowDialog()==DialogResult.OK)
- {
- string fName=openFileDialog.FileName;
- //do something
- }
可以看出,这三个风格其实很想象,最主要的就是那么几个属性,Filter表示可以打开的文件的类型,InitialDir表示默认打开的路径,defext表示默认打开的文件类型
转自:http://blog.csdn.net/jxluofeng/article/details/9265667
这篇博客介绍了如何在不同的Windows编程环境中实现文件打开对话框,包括Win32 API、MFC和C#。通过设置Filter、InitialDir和defExt属性,可以定制文件类型、初始路径和默认扩展名。对话框成功打开后,用户选择的文件路径可用于后续操作。

4850

被折叠的 条评论
为什么被折叠?



