MFC教程(11)-- MFC下的文件类

文件操作的方法

使用Visual C++编程,有如下方法进行文件操作:

(1)使用标准C运行库函数,包括fopen、fclose、fseek等。

(2)使用Win16下的文件和目录操作函数,如lopen、lclose、lseek等。不过,在Win32下,这些函数主要是为了和Win16向后兼容。

(3)使用Win32下的文件和目录操作函数,如CreateFile,CopyFile,DeleteFile,FindNextFile,等等。

Win32下,打开和创建文件都由CreateFile完成,成功的话,得到一个Win32下的句柄,这不同于“C”的fopen返回的句柄。在Win16下,该句柄和C运行库文件操作函数相容。但在Win32下,“C”的文件操作函数不能使用该句柄,如果需要的话,可以使用函数_open_osfhandle从Win32句柄得到一个“C”文件函数可以使用的文件句柄。

关闭文件使用Win32的CloseHandle。

在Win32下,CreateFile可以操作的对象除了磁盘文件外,还包括设备文件如通讯端口、管道、控制台输入、邮件槽等等。

(4)使用CFile和其派生类进行文件操作。CFile从CObject派生,其派生类包括操作文本文件的CStdioFile,操作内存文件的CmemFile,等等。

CFile是建立在Win32的文件操作体系的基础上,它封装了部分Win32文件操作函数。

最好是使用CFile类(或派生类)的对象来操作文件,必要的话,可以从这些类派生自己的文件操作类。统一使用CFile的界面可以得到好的移植性。

MFC的文件类

MFC用一些类来封装文件访问的Win32 API。以CFile为基础,从CFile派生出几个类,如CStdioFile,CMemFile,MFC内部使用的CMiororFile,等等。

CFile的结构

CFile定义的枚举类型

CFile类定义了一些和文件操作相关的枚举类型,主要有四种:OpenFlags,Attribute,SeekPosition,hFileNull。下面,分别解释这些枚举类型。

OpenFlags

OpenFlags定义了13种文件访问和共享模式:

enum OpenFlags {

//第一(从右,下同)至第二位,打开文件时访问模式,读/写/读写

modeRead = 0x0000,

modeWrite = 0x0001,

modeReadWrite = 0x0002,

shareCompat = 0x0000, //32位MFC中没用

//第五到第七位,打开文件时的共享模式

shareExclusive = 0x0010,//独占方式,禁止其他进程读写

shareDenyWrite = 0x0020,//禁止其他进程写

shareDenyRead = 0x0030,//禁止其他进程读

shareDenyNone = 0x0040,//允许其他进程写

//第八位,打开文件时的文件继承方式

时间: 2024-08-01 12:12:37

MFC教程(11)-- MFC下的文件类的相关文章

php批量删除目录下所有文件与文件夹

php教程 批量删除目录下所有文件与文件夹 //删除目录下所有文件 //方法一 $dir="test";    function defiles( $dir )  {   $handle=opendir($dir);     while   (($file=readdir($handle))<>"")   {     if(is_file($file))     unlink($file);     }     closedir($handle);   

jsp显示目录下所有文件与子目录代码

jsp教程显示目录下所有文件与子目录代码  public static void getFiles(List<File> fileList, String path, String fileSuffix) {           File file = new File(path);           File[] files = file.listFiles();           if (files == null) {               return;          

php 获取目录下所有文件实现代码

php教程 获取目录下所有文件实现代码 class a{     private $img_dir;         private $img_path;         private $face_files = array();         private $allow_extension = array(); private function get_face_files()         {             $files = array();             if(

MFC教程(1)--MFC概述

MFC是一个编程框架 MFC (Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法.因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓.Microsoft Visual C++提供了相应的工具来完成这个工作:AppWizard可以用来生成初步

MFC教程(2)-- MFC和Win32

MFC Object和Windows Object的关系 MFC中最重要的封装是对Win32 API的封装,因此,理解Windows Object和MFC Object (C++对象,一个C++类的实例)之间的关系是理解MFC的关键之一.所谓Windows Object(Windows对象)是Win32下用句柄表示的Windows操作系统对象:所谓MFC Object (MFC对象)是C++对象,是一个C++类的实例,这里(本书范围内)MFC Object是有特定含义的,指封装Windows O

MFC基于对话框模式下使用鼠标在Text Control控件中画图

问题描述 MFC基于对话框模式下使用鼠标在Text Control控件中画图 想在MFC对话框的Text Control控件窗口中用鼠标画图,但是没有反应.我是自己添加了OnLButtonDown和OnLButtonUp函数. void CKdu_CompressDlg::OnLButtonDown(UINT nFlags,CPoint point) { CWnd *pWnd=GetDlgItem(IDC_STATIC_IMG); HWND hwnd=pWnd->GetSafeHwnd(); m

MFC程序在Win7下运行正常,在XP下提示参数不正确,运行不了

问题描述 MFC程序在Win7下运行正常,在XP下提示参数不正确,运行不了,直接不运行,是怎么回事呐 解决方案 解决方案二:也许是DLL版本的问题解决方案三:静态编译试试解决方案四:可能是文件相对路径或者外部控件丢失的问题解决方案五:64bit32bit问题?具体错误是啥,贴出来看看.解决方案六:贴图.谁知道啥错了.大部分程序是没错的.八成是用到参数了.参数配置不对啊/////////////////////////////////////////////////////////////////

c++-MFC Tab控件下的page与page的控件冲突

问题描述 MFC Tab控件下的page与page的控件冲突 我在MFC下做了4个对话框,其中一个是主对话框,内有一个Tab控件,然后剩下的三个对话框作为子对话框,也就是tab控件的三个page. 我在第一个page(子对话框)中添加了一些控件,如listctrl控件,同时关联了变量. 程序运行没有问题. 接着我在其他两个page(子对话框)中添加了相同的控件,同时关联了变量,接下来就是令我不解的地方,程序崩溃了.我什么都没做,只是关联了一下控件变量,不知道为什么程序会崩溃. 在线等,求大神指导

MFC写的一个视频显示控件类,无法复用显示两路视频

问题描述 MFC写的一个视频显示控件类,无法复用显示两路视频 刚学MFC,仿照实例写了一个视频显示的控件类,SubDlgView ,这个类UI界面只有一个picture control,接口就是一个IP地址,在CAMDlg.h 里面定义两个私有成员SubDlgView videoDisplay2; SubDlgView videoDisplay; 但是显示的时候总是只能再第二个显示的控件中显示视频?不知道为什么 解决方案 控件只支持一个视频显示吧 做两个进程呢 解决方案二: 一个简单的验证方法,