必威体育Betway必威体育官网
当前位置:首页 > IT技术

CFileDialog

时间:2019-10-23 16:43:37来源:IT技术作者:seo实验室小编阅读:51次「手机版」
 

cfiledialog

范例1 打开文件对话框

CString   FilePathName;//文件名参数定义

   cfiledialog  Dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"TXT Files(*.txt)|*.txt|All Files(*.*)|*.*");

//打开文件

   if(Dlg.DoModal() == IDOK)//是否打开成功

   {

       FilePathName =  Dlg.GetPathName();//取得文件路径及文件名

       SetDlgItemText(IDC_OutPutFile,FilePathName);

   }

上的程序就是处理一个"打开/保存文件对话框"的程序,下面我将分析这段程序,详细的说明各个参数的作用!

个默认文件扩展名

  多个默认扩展名:TCHAR szFilter[] = _T("数据库文件(*.mdb;*.mdf)|*.mdb; *.mdf|所有文件(*.*)|*.*||");

  构造一个对象并提供相应的参数,构造函数原型如下: 

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 为父窗口指针。 

   创建文件对话框可以使用DoModal(),在返回后可以利用下面的函数得到用户选择: 

   CString CFileDialog::GetPathName( ) 得到完整的文件名,包括目录名和扩展名如:c: est est1.txt 

   CString CFileDialog::GetFileName( ) 得到完整的文件名,包括扩展名如:test1.txt 

   CString CFileDialog::GetExtName( ) 得到完整的文件扩展名,如:txt 

   CString CFileDialog::GetFiletitle ( ) 得到完整的文件名,不包括目录名和扩展名如:test1 

   POSITION CFileDialog::GetStartPosition( ) 对于选择了多个文件的情况得到第一个文件位置。 

   CString CFileDialog::GetNextPathName( POSITION& pos ) 对于选择了多个文件的情况得到下一个文件位置,并同时返回当前文件名。但必须已经调用过POSITION CFileDialog::GetStartPosition( )来得到最初的POSITION变量。 

来源: <http://blog.csdn.net/wangjiannuaa/article/details/6301330>

  范例2 打开多个文件

/*****文件打开对话框*******/

TCHAR* filters = _T("红外图像(*.ird)|*.ird");//过滤器

//文件打开对话框

CFileDialog fileDlg(TRUE,NULL,NULL, OFN_ALLOWMULTISELECT | OFN_ENABLESIZING | OFN_HIDEREADONLY,filters);

//最多可以打开64个文件

fileDlg.m_ofn.nMaxFile = MAX_OPEN_IMAGE_COUNT * MAX_PATH;

TCHAR* pCh = new TCHAR[fileDlg.m_ofn.nMaxFile];

if (NULL == pCh)

{

return;

}

fileDlg.m_ofn.lpstrFile = pCh;

zeromemory(fileDlg.m_ofn.lpstrFile,sizeof(TCHAR) * fileDlg.m_ofn.nMaxFile);//对内存块清零

if(fileDlg.DoModal() == IDOK)

{

POSITION pos_file = fileDlg.GetStartPosition();//获取第一个文件的位置

CString pathName;

while(pos_file != NULL)//循环读出每个路径

{

pathName = fileDlg.GetNextPathName(pos_file);

CIRData* pIRData = m_workSpace.addZsIRData(pathName);

if (pIRData)

{

createAnImageWindow(pIRData);

}

//UpdateAllViews(NULL);

}

if (pCh != NULL)

{

delete[] pCh;

pCh = NULL;

}

/***************************/

//保存文件对话框

void COpenSaveFileDialogDlg::OnBnClickedButtonSave()

{

BOOL isOpen = FALSE;//是否打开(否则为保存)

CString defaultDir = L"E:\\FileTest";//默认打开的文件路径

CString fileName = L"test.doc";//默认打开的文件名

CString filter = L"文件 (*.doc; *.ppt; *.xls)|*.doc;*.ppt;*.xls||";//文件过虑的类型

CFileDialog openFileDlg(isOpen, defaultDir, fileName, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, filter, NULL);

openFileDlg.GetOFN().lpstrInitialDir = L"E:\\FileTest\\test.doc";

INT_PTR result = openFileDlg.DoModal();

CString filePath = defaultDir + "\\" + fileName;

if(result == IDOK) {

filePath = openFileDlg.GetPathName();

}

CWnd::SetDlgItemTextW(IDC_EDIT_DEST, filePath);

}

文章最后发布于: 2015-07-24 16:31:34

相关阅读

一个定制CFileDialog对话框的实例

很多程序员都喜欢让自己的代码运行效果与众不同。Windows系统的应用程序打开某个文件一般使用的都是默认的CFileDialog。但是这个

CFileDialog

CFileDialog fDlg(TRUE, _TEXT("txt"), NULL, 4|2,  _TEXT("文本文件(*.txt,*.ini,*.log)|*.txt;*.ini;*.log|全部文件(*.*)|*.*

分享到:

栏目导航

推荐阅读

热门阅读