您的位置:首页 > 运维架构

关于OpenFileDialog在MFC和OPENFILENAME在win32中的使用

2013-07-07 22:27 603 查看
    大多数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表示默认打开的文件类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息