为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

文件对话框

2017-12-05 6页 doc 20KB 49阅读

用户头像

is_003124

暂无简介

举报
文件对话框文件对话框 一、 通用对话框 Windows提供了一组标准用户界面对话框,它们都有相应的MFC库中的类来支持。所有这些通用对话框类都是从一个公共的基类CCommonDialog派生而来。表列出了这些通用对话框。 对话框 用 途 CColorDialog 颜色对话框,允许用户选择或创建颜色 CFileDialog 文件对话框,允许用户打开或保存一个文件 查找替换对话框,允许用户查找或替换指定CFindReplaceDialog 字符串 CPageSetupDialog 页面设置对话框,允许用户设置页面参数 字体对...
文件对话框
文件对话框 一、 通用对话框 Windows提供了一组标准用户界面对话框,它们都有相应的MFC库中的类来支持。所有这些通用对话框类都是从一个公共的基类CCommonDialog派生而来。列出了这些通用对话框。 对话框 用 途 CColorDialog 颜色对话框,允许用户选择或创建颜色 CFileDialog 文件对话框,允许用户打开或保存一个文件 查找替换对话框,允许用户查找或替换指定CFindReplaceDialog 字符串 CPageSetupDialog 页面设置对话框,允许用户设置页面参数 字体对话框,允许用户从列出的可用字体中CFontDialog 选择一种字体 打印对话框,允许用户设置打印机的参数及CPrintDialog 打印文档 用户可以在程序中直接使用这些通用对话框。 例:已文件对话框为例:选定一个文件后,单击[打开]按钮,就会弹出一个消息对话框,显示该文件的全路径名称。 通用文件对话框类CFileDialog的构造函数的原型如下: CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, PCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL ); lpszDefExt用来指定文件扩展名。若用户在文件名编辑框中没有键入扩展名,则系统在文件名后自动添加lpszDefExt指定的扩展名。 lpszFileName用来在文件名编辑框中指定开始出现的文件名,若为NULL时,则不出现。dwFlags用来指定对话框的界面标志,当为OFN_HIDEREADONLY时表示隐藏对话框中的“只读”复选框,当为OFN_OVER- WRITEPROMPT时表示文件保存时,若有指定的文件有重名,则出现提示对话框。 pParentWnd用来指定对话框的父窗口指针。 lpszFilter参数用来确定出现在文件列表框中的文件类型。它由一对或多对字符串组成,每对字符串中第一个字符串表示过滤器名称,第二个字符串表示文件扩展名,若指定多个扩展名则用“;”分隔,字符串最后用两个“|”结尾。注意:字符串应好写在一行,若一行写不下则用“\”连接。 GetPathName是CFileDialog类成员函数,用来获取文件的全路径名。 CString GetFileName( ) const; 该函数返回在对话框确定的文件名;如确定的文件是“C:\FILES\TEXT.DAT”则返回“TEXT.DAT” CString GetFileExt( ) const; 该函数返回在对话框确定的文件扩展名;如确定的文件是“DATA.TXT”,则返回“TXT”。 值得注意的是:只有当调用对话框类的成员函数DoModal并返回IDOK后,该对话框类的这些属性成员函数才会有效。 二、使用CFile类 1、 文件的打开和关闭 在MFC中,使用CFile打开一个文件通常使用下列两个步骤: 构造一个不带任何参数的CFile对象; (1)调用成员函数Open并指定文件路径以及文件标志。 (2)CFile类的Open函数原型如下: BOOL Open( LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL ); lpszFileName用来指定一个要打开的文件路径,该路径可以是相对的、绝对的或是一个网络文件名(UNC)。 nOpenFlags用来指定文件打开的标志。 pError用来表示操作失败产生的CFileException指针,CFileException是一个与文件操作有关的异常处理类。函数Open操作成功时返回TRUE,否则为FALSE。 方 式 含 义 CFile::modeCreate 表示创建一个新文件,若该文件已存在,则将文件 原有清除。 CFile::modeNoTruncate 与CFile::modeCreate 组合。若文件已存在,不会将 文件原有内容清除。 CFile::modeRead 打开文件只读。 CFile::modeReadWrite 打开文件读与写。 CFile::modeWrite 打开文件只写。 CFile::modeNoInherit 防止子线程继承该文件。 CFile::shareDenyNone 共享文件的读和写,若其他线程用相关方式打开过 此文件,则创建失败。 CFile::shareDenyRead 禁止其他线程读此共享文件,若其他线程用相关方 式打开过此文件,则创建失败。 CFile::shareDenyWrite 禁止其他线程写此共享文件,若其他线程用相关方 式打开过此文件,则创建失败。 CFile::shareExclusive 禁止其他线程读写此共享文件,若其他线程用相关 方式打开过此文件,即使是当前线程也会使创建失 败。 例如,下面的代码将显示如何用读写方式创建一个新文件: char* pszFileName = "c:\\test\\myfile.dat"; CFile myFile; CFileException fileException; if ( !myFile.Open( pszFileName, CFile::modeCreate | CFile::modeReadWrite ), &fileException ) {TRACE( "Can't open file %s, error = %u\n", pszFileName, fileException.m_cause ); } 代码中,若文件创建打开有任何问题,Open函数将在它的最后一个参数中返回CFileException(文件异常类)对象,TRACE宏将显示出文件名和表示失败原因的代码。使用AfxThrowFileException函数将获得更详细的有关错误的报告。 与文件“打开”相反的操作是“关闭”,可以使用Close函数来关闭一个文件对象,若该对象是在堆内存中创建的,还需调用delete来删除它(不是删除物理文件)。 2、 文件的读写和定位 CFile类支持文件的读、写和定位操作。它们相关函数的原型如下: UINT Read( void* lpBuf, UINT nCount ); 此函数将文件中指定大小的数据读入指定的缓冲区,并返回向缓冲区传输的字节数。需要说明的是,这个返回值可能小于nCount,这是因为可能到达了文件的结尾。 void Write( const void* lpBuf, UINT nCount ); 此函数将缓冲区的数据写到文件中。参数lpBuf用来指定要写到文件中的数据缓冲区的指针,nCount表示从数据缓冲区传送的字节数。对于文本文件,每行的换行符也被计算在内。 LONG Seek( LONG lOff, UINT nFrom ); 此函数用来定位文件指针的位置,若要定位的位置是有效的,则此函数将返回从文件开始的偏移量。否则,返回值是不定的且激活一个CFileException对象。参数lOff用来指定文件指针移动的字节数,nFrom表示指针移动方式,它可以是CFile::begin(从文件的开始位置)、CFile::current(从文件的当前位置)或CFile::end(从文件的最后位置,但lOff必须为负值才能在文件中定位,否则将超出文件)等。需要说明的是,文件刚打开时,默认的文件指针位置为0,即文件的开始位置。 另外,函数void SeekToBegin( )和DWORD SeekToEnd( )分别将文件指针移动到文件开始和结尾位置,对于后者还将返回文件的大小。 3、 获取文件的有关信息 CFile 还支持获取文件状态,包括文件是否存在、创建与修改的日期和时间、逻辑大小和路径等。 BOOL GetStatus( CFileStatus& rStatus ) const; static BOOL PASCAL GetStatus( LPCTSTR lpszFileName, CFileStatus& rStatus ); 若指定文件的状态信息成功获得,该函数返回TRUE,否则返回FALSE。其中,参数lpszFileName用来指定一个文件路径,这个路径可以是相对的或是绝对的,但不能是 网络文件名。rStatus用来存放文件状态信息,它是一个CFileStatus结构类型,该结构具 有下列成员: CTime m_ctime 文件创建日期和时间 CTime m_mtime 文件最后一次修改日期和时间 CTime m_atime 文件最后一次访问日期和时间 LONG m_size 文件大小的字节数 BYTE m_attribute 文件属性 char m_szFullName[_MAX_PATH] 文件名 需要说明的是,static形式的GetStatus函数将获得指定文件名的文件状态,并将文件名复制至m_szFullName中。该函数仅获取文件状态,并没有真正打开文件,这对于测试一个文件的存在性是非常有用的。例如下面的代码: CFile theFile; char* szFileName = "c:\\test\\myfile.dat"; BOOL bOpenOK; CFileStatus status; if( CFile::GetStatus( szFileName, status ) ) // 该文件已存在,直接打开 { bOpenOK = theFile.Open( szFileName, CFile::modeWrite ); } else // 该文件不存在,需要使用modeWrite方式创建它 { bOpenOK = theFile.Open( szFileName, CFile::modeCreate | CFile::modeWrite ); }
/
本文档为【文件对话框】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索