Windows编程基础VS2010开发环境第10章 MFC中的文件操作

合集下载

VS2010-MFC编程入门

VS2010-MFC编程入门

VS2010/MFC编程入门之前言分类标签: 编程入门VC++VS2010MFC鸡啄米的C++编程入门系列给大家讲了C++的编程入门知识,大家对C++语言在语法和设计思想上应该有了一定的了解了。

但是教程中讲的例子只是一个个简单的例程,并没有可视化窗口。

鸡啄米在这套VS2010/MFC编程入门教程中将会给大家讲解怎样使用VS2010进行可视化编程,也就是基于窗口的程序。

C++编程入门系列主要偏重于理论方面的知识,目的是让大家打好底子,练好内功,在使用VC++编程时不至于丈二和尚摸不着头脑。

本套教程也会涉及到VC++的原理性的东西,同样更重视实用性,让大家学完本套教程以后,基本的界面程序都能很容易编写出来。

VC++简介VC++全称是Visual C++,是由微软提供的C++开发工具,它与C++的根本区别就在于,C ++是语言,而VC++是用C++语言编写程序的工具平台。

VC++不仅是一个编译器更是一个集成开发环境,包括编辑器、调试器和编译器等,一般它包含在Visual Studio中。

Visual Studio包含了VB、VC++、C#等编译环境。

当然我们在使用VC++ 6.0的时候为了轻便,总是只单独安装VC++ 6.0。

但自微软2002年发布Visual 以来,微软建立了在. NET框架上的代码托管机制,一个项目可以支持多种语言开发的组件,VC++同样被扩展为支持代码托管机制的开发环境,所以.NET Framework是必须的,也就不再有VC++的独立安装程序,不过可以在安装Visual Studio时只选择VC++进行安装。

VC++版本的选择:VS2010因为VC++ 6.0以后的版本不再有独立的安装程序,所以鸡啄米在教程中将不会称VC++ 6. 0以后的版本为VC++ 7.0等等,而是用VC++所属的Visual Studio的版本名称代替,比如VS2003。

近些年VC++主要的版本包括:VC++ 6.0、VS2003、VS2005、VS2008和VS2010。

VS2010MFC编程入门之四十五(MFC常用类:CFile文件操作类)

VS2010MFC编程入门之四十五(MFC常用类:CFile文件操作类)

VS2010MFC编程入门之四十五(MFC常用类:CFile文件操作类)上一节中鸡啄米讲了定时器Timer的用法,本节介绍下文件操作类CFile类的使用。

CFile类概述如果你学过C语言,应该知道文件操作使用的是文件指针,通过文件指针实现对它指向的文件的各种操作。

这些文件操作函数中有的最终还是调用了操作系统的API函数或者处理过程与之类似,例如在Windows系统中,fread函数就调用了API函数ReadFile。

Windows系统的API函数除了ReadFile,还有CreateFile、WriteFile等函数。

而MFC基于面向对象的思想,将这些Windows API函数封装到了CFile 类中,实现对文件的打开、关闭、读、写、获取文件信息等操作。

使用CFile类对文件进行操作非常便捷。

CFile 类的成员函数CFile( );CFile(HANDLE hFile);CFile(LPCTSTR lpszFileName,UINT nOpenFlags);以上三个成员函数都是CFile的构造函数,用于构造CFile 对象。

参数hFile为要关联到CFile对象的文件的句柄。

参数lpszFileName为要关联到CFile对象的文件的相对路径或者绝对路径;参数nOpenFlags为文件访问选项的组合,通过各选项的按位或运算实现组合,下面的5个表列出了nOpenFlags参数可能取的选项:下面的文件访问模式选项表中只能选择一个进行组合,默认取CFile::modeRead。

取值描述CFile::modeRead 只读方式访问文件CFile::modeWrite 写入方式访问文件CFile::modeReadWrite 读写方式访问文件。

VS2010-MFC编程入门

VS2010-MFC编程入门

VS2010-MFC编程入门之前言鸡啄米的C++编程入门系列给大家讲了C++的编程入门知识,大家对C++语言在语法和设计思想上应该有了一定的了解了。

但是教程中讲的例子只是一个个简单的例程,并没有可视化窗口。

鸡啄米在这套VS2010/MFC编程入门教程中将会给大家讲解怎样使用VS2010进行可视化编程,也就是基于窗口的程序。

C++编程入门系列主要偏重于理论方面的知识,目的是让大家打好底子,练好内功,在使用VC++编程时不至于丈二和尚摸不着头脑。

本套教程也会涉及到VC++的原理性的东西,同样更重视实用性,让大家学完本套教程以后,基本的界面程序都能很容易编写出来。

VC++简介VC++全称是Visual C++,是由微软提供的C++开发工具,它与C++的根本区别就在于,C++是语言,而VC++是用C++语言编写程序的工具平台。

VC++不仅是一个编译器更是一个集成开发环境,包括编辑器、调试器和编译器等,一般它包含在Visual Studio中。

Visual Studio包含了VB、VC++、C#等编译环境。

当然我们在使用VC++ 6.0的时候为了轻便,总是只单独安装VC++ 6.0。

但自微软2002年发布Visual 以来,微软建立了在.NET 框架上的代码托管机制,一个项目可以支持多种语言开发的组件,VC++同样被扩展为支持代码托管机制的开发环境,所以.NET Framework是必须的,也就不再有VC++的独立安装程序,不过可以在安装Visual Studio时只选择VC++进行安装。

VC++版本的选择:VS2010因为VC++ 6.0以后的版本不再有独立的安装程序,所以鸡啄米在教程中将不会称VC++ 6.0以后的版本为VC++ 7.0等等,而是用VC++所属的Visual Studio的版本名称代替,比如VS2003。

近些年VC++主要的版本包括:VC++ 6.0、VS2003、VS2005、VS2008和VS2010。

MFC文件操作大全

MFC文件操作大全

1.创建文件夹CreateDirectory(%%1,NULL);2.创建文件CFile f ile;file.Open(%%1,CFile::modeCreate|CFile::modeWrite);3.删除文件DeleteFile(%%1);4.删除文件夹RemoveDirectory(%%1);5.删除一个目录下所有的文件夹CFileFind f inder;BOOL b Working =f inder.FindFile(%%1+"\\*.*"); while (bWorking){bWorking =f inder.FindNextFile();if (finder.IsDirectory()){dir.Delete(finder.GetFilePath());}}6.清空文件夹RemoveDirectory(%%1);CreateDirectory(%%1,NULL)7.读取文件char s Read[1024];CFile m File(_T(%%1),CFile::modeRead);while (sRead!=null){mFile.Read(sRead,1024);CString %%2=CString(sRead);%%3}e lse {//找不到下一个文件r eturn;}}}FindClose(hSearch);14.复制一个文件夹下所有的文件夹到另一个文件夹下WIN32_FIND_DATA F ileData;HANDLE h Search;DWORD d wAttrs;char s zDirPath[] =%%2;char s zNewPath[MAX_PATH];char s zHome[MAX_PATH];BOOL f Finished =F ALSE;if (!CreateDirectory(szDirPath,NULL)){//不能创建新的目录return;}BOOL b Working =f inder.FindFile(%%1+"\\*.*");while (bWorking){bWorking =f inder.FindNextFile();if(finder.IsDirectory()){hSearch =F indFirstFile(finder.GetFilePath()+"\\*.*", &FileData); if (hSearch == I NVALID_HANDLE_VALUE){return;}while (!fFinished){lstrcpy(szNewPath, s zDirPath);lstrcat(szNewPath, F ileData.cFileName);if (CopyFile(FileData.cFileName, s zNewPath, F ALSE)){dwAttrs =G etFileAttributes(FileData.cFileName);DWORD d wAttrs;char s zDirPath[] =%%2;char s zNewPath[MAX_PATH];char s zHome[MAX_PATH];BOOL f Finished =F ALSE;if (!CreateDirectory(szDirPath, N ULL)){//不能创建新的目录return;}hSearch =F indFirstFile(%%1+"\\*.*", &FileData);if (hSearch == I NVALID_HANDLE_VALUE){return;}while (!fFinished){lstrcpy(szNewPath, s zDirPath);lstrcat(szNewPath, F ileData.cFileName);if (CopyFile(FileData.cFileName, s zNewPath, F ALSE)) {dwAttrs =G etFileAttributes(FileData.cFileName);if (!(dwAttrs &F ILE_ATTRIBUTE_READONLY)) {SetFileAttributes(szNewPath,dwAttrs |F ILE_ATTRIBUTE_READONLY);}}else{//不能复制文件return;}if (!FindNextFile(hSearch, &FileData)){if (GetLastError() == E RROR_NO_MORE_FILES) {//遍历文件夹完成return;}while (!fFinished){lstrcpy(szNewPath, s zDirPath);lstrcat(szNewPath, F ileData.cFileName);if (CopyFile(FileData.cFileName, s zNewPath, F ALSE)) {dwAttrs =G etFileAttributes(FileData.cFileName);if (!(dwAttrs &F ILE_ATTRIBUTE_READONLY)) {SetFileAttributes(szNewPath,dwAttrs |F ILE_ATTRIBUTE_READONLY);}}else{//不能复制文件return;}if (!FindNextFile(hSearch, &FileData)){if (GetLastError() == E RROR_NO_MORE_FILES) {//遍历文件夹完成fFinished =T RUE;}else{//找不到下一个文件return;}}}FindClose(hSearch);RemoveDirectory(finder.GetFilePath().GetBuffer(0)); }17.以一个文件夹的框架在另一个目录创建文件夹和空文件WIN32_FIND_DATA F ileData;HANDLE h Search;DWORD d wAttrs;char s zDirPath[] =%%2;char s zNewPath[MAX_PATH];char s zHome[MAX_PATH];BOOL f Finished =F ALSE;if (!CreateDirectory(szDirPath, N ULL)){//不能创建新的目录return;}hSearch =F indFirstFile(%%1+"\\*.*", &FileData);if (hSearch == I NVALID_HANDLE_VALUE){return;}while (!fFinished){lstrcpy(szNewPath, s zDirPath);lstrcat(szNewPath, F ileData.cFileName);HANDLE h File=CreateFileHandle h File=CreateFile(szNewPath,GENERIC_REA D,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORM AL|FILE_FLAG_SEQUENTIAL_SCAN,NULL);if(!hFile){//不能创建文件return;}if (!FindNextFile(hSearch, &FileData)){if (GetLastError() == E RROR_NO_MORE_FILES){//遍历文件夹完成fFinished =T RUE;targetfile=%%2+"//"+targetfile/;CopyFile(sourcefile.GetBuffer(0),targetfile.GetBuffer(0),true); }}}20.提取扩展名//#include <string>using s td::string;string s(%%1);size_t i=s.rfind('.',s.length());if(i!=string::npos)CString %%2(s.substr(i+1,s.length()-i));elseCString %%2="";21.提取文件名//#include <string>using s td::string;string s(%%1);char s ep='/';#ifdef _WIN32sep='\\';#endifsize_t i=s.rfind(sep,s.length());if(i!=string::npos)CString %%2(s.substr(i+1,s.length()-i));elseCString %%2="";/*CString p ath(%%1);CString %%2=path.Mid(path.ReverseFind('\\')+1);*/22.提取文件路径//#include <string>using s td::string;string s(%%1);using n amespace b oost::filesystem;try {path p1=complete(path(%%2,native),path(%%1,native));path p2=system_complete(path(%%2,native));CString %%3(p3);}catch(exception& e){//e.what();}25.移动文件MoveFile(%%1,%%2);26.移动一个文件夹下所有文件到另一个目录//#include <string>using s td::string;char s ep='/';#ifdef _WIN32sep='\\';#endifCFileFind f inder;BOOL b Working =f inder.FindFile(%%1+"\\*.*");while (bWorking){bWorking =f inder.FindNextFile();if(!finder.IsDirectory() || f inder.IsDots()){string s(finder.GetFileName());CString s ourcefile(%%1);if(s.rfind(sep,s.length())!=string::npos){sourcefile=sourcefile+"//"+s.substr(i+1,s.length()-i);CString t argetfile(s.substr(i+1,s.length()-i));targetfile=%%2+"//"+targetfile/;MoveFile(sourcefile.GetBuffer(0),targetfile.GetBuffer(0),true); }}}#ifdef _WIN32sep='\\';#endifsize_t s z=s.rfind(sep,s.length());if(sz!=string::npos){CFile O ut;CString s trFilename(s.substr(i+1,s.length()-i));if(Out.Open(%%2+"//"+strfilename,cfile::modewrite%7ccfile::modecreate)){ for(int i=1;i<=2;i++){String F ilename=%%%2+"//"+strfilename+atoi(i);CFile I n;if(In.Open(Filename,CFile::modeRead)){char c bBuffer[4096];int n Filesize=In.GetLength();while(nFilesize>0){int n Size=sizeof(cbBuffer);if(nSize>nFilesize)nSize=nFilesize;try{In.Read(cbBuffer,nSize);}catch(CFileException *e){char *lpMsgBuf;if(FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |FORMAT_MESSAGE_FROM_SYSTEM,NULL,e->m_lOsError,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPSTR)&lpMsgBuf,0,NULL)>0){AfxMessageBox(lpMsgBuf);LocalFree(lpMsgBuf);}e->Delete();return;}using s td::string;string s(%%1);char s ep='/';#ifdef _WIN32sep='\\';#endifsize_t s z=s.rfind(sep,s.length());if(sz!=string::npos){CFile O ut,In;int n FIlesize;char *lpMsgBuf;CString s trFilename(s.substr(i+1,s.length()-i));if(!in.Open(%%1,CFile::modeRead)){//不能打开输入文件return;}if(!Out.Open(%%2+"//enc_%22+strfilename,cfile::modewrite/ |C File::modeCrea te)){//不能打开输出文件return;}nFilesize=In.GetLength();lpBuffer=new c har[nFilesize];if(lpBuffer==NULL){//不能分配复制缓存return;}CFileStatus r Status;In.GetStatus(%%1,rStatus);try{In.Read(cbBuffer,nFilesize);}catch(CFileException *e){char *lpMsgBuf;if(FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |FORMAT_MESSAGE_FROM_SYSTEM,NULL,e->m_lOsError,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf);LocalFree(lpMsgBuf);}e->Delete();return;}for(int i=0;i<nFilesize;i++){int i bt=lpBuffer[i];ibt+=100;ibt%=256;bpBuffer[i]=(char)ibt;}try{Out.Write(cbBuffer,nFilesize);}catch(CFileException *e){char *lpMsgBuf;if(FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,NULL,e->m_lOsError,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf);LocalFree(lpMsgBuf);}e->Delete();return;}Out.Close();//In.Close();CFile::SetStatus(%%2+"//enc_%22+strfilename,rstatus);d elete[] l pBuffer;}32.文件简单解密//#include <string>using s td::string;string s(%%1);char s ep='/';#ifdef _WIN32sep='\\';#endifsize_t s z=s.rfind(sep,s.length());if(sz!=string::npos){CFile O ut,In;int n FIlesize;char *lpMsgBuf;CString s trFilename(s.substr(i+1,s.length()-i));if(!in.Open(%%2+"//enc_%22+strfilename,cfile::moderead)){ //不能打开输入文件return;}if(!Out.Open(%%1,CFile::modeWrite |C File::modeCreate)){ //不能打开输出文件return;}nFilesize=In.GetLength();lpBuffer=new c har[nFilesize];if(lpBuffer==NULL){//不能分配复制缓存return;}CFileStatus r Status;In.GetStatus(%%2+"//enc_%22+strfilename,rstatus);t ry{In.Read(cbBuffer,nFilesize);}catch(CFileException *e){char *lpMsgBuf;if(FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |F ORMAT_MESSAGE_FROM _SYSTEM,NULL,e->m_lOsError,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPSTR)&lpMsgBuf,0,NULL)>0){AfxMessageBox(lpMsgBuf);LocalFree(lpMsgBuf);}e->Delete();return;}for(int i=0;i<nFilesize;i++){int i bt=lpBuffer[i];ibt-=100;ibt+=256;ibt%=256;bpBuffer[i]=(char)ibt;}try{Out.Write(cbBuffer,nFilesize);}catch(CFileException *e){char *lpMsgBuf;if(FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |F ORMAT_MESSAGE_FROM _SYSTEM,NULL,e->m_lOsError,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPSTR)&lpMsgBuf,0,NULL)>0){AfxMessageBox(lpMsgBuf);LocalFree(lpMsgBuf);}e->Delete();return;char c bBuffer[4096];int n FIlesize=In.GetLength();while(nFIlesize>0){{int n Size=sizeof(cbBuffer);if(nSize>nFilesize)nSize=nFilesize;try {In.Read(cbBuffer,nSize);}catch(CFileException *e){char *lpMsgBuf;if(FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError,MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),(LPSTR)&lpMsgBuf,0,NULL)>0){AfxMessageBox(lpMsgBuf);LocalFree(lpMsgBuf);}e->Delete();return;}try {Out.Write(cbBuffer,nSize);}catch(CFileException *e){char *lpMsgBuf;if(FormatMessage(*/WritePrivateProfileString(%%2,%%3,%%4,path);36.获得当前路径TCHAR s zDir[MAX_PATH];GetCurrentDirectory(szDir,MAX_PATH];CString %%1(szDir);37.读取XML数据库//#include <string>//using n amespace s td;char s Read[5192];CFile m File(_T(%%1),CFile::modeRead);mFile.Read(sRead,5192);if(sRead!=null){string t mp;while(sRead!=null){tmp.append(sRead);mFile.Read(sRead,5192);}//%%2="Logs" //%%4="ID" //%%6="Content"//%%3="Log" //%%5="Time"//%%7 c ode %%8 t ime %%9 c ontentstring t arget(%%7),globalTag("<"+%%2+">");string p ropTag1("<"+%%5+">",endTag1("</"+%%5+">"); string p ropTag2("<"+%%6+">",endTag1("</"+%%6+">");int o ffset=tmp.find_first_of(globalTag);while(offset){offset=tmp.find_first_of(globalTag);string d escription;tmp.copy(description.begin(),tmp.find_first_of("\"",offset+1)-offset);if(pare(description)==0){#include "zconf.h"*/HANDLE h File, h FileToWrite;CString s trFilePath;m_ctrEdit.GetWindowText(strFilePath);//打开要进行解压缩的文件hFile =C reateFile(strFilePath, // f ile n ameGENERIC_READ, // o pen f or r eadingFILE_SHARE_READ, // s hare f or r eadingNULL, // n o s ecurityOPEN_EXISTING, // e xisting f ile o nlyFILE_ATTRIBUTE_NORMAL, // n ormal f ileNULL); // n o a ttr. t emplateif (hFile == I NVALID_HANDLE_VALUE){AfxMessageBox("Could n ot o pen f ile t o r ead"); // p rocess e rror return;}HANDLE h MapFile, h MapFileToWrite;//创建一个文件映射hMapFile =C reateFileMapping(hFile, // C urrent f ile h andle. NULL, // D efault s ecurity.PAGE_READONLY, // R ead/write p ermission.0, // M ax. o bject s ize.0, // S ize o f h File. "ZipTestMappingObjectForRead"); // N ame o f m apping o bject. if (hMapFile == N ULL){AfxMessageBox("Could n ot c reate f ile m apping o bject"); return;}LPVOID l pMapAddress, l pMapAddressToWrite;//创建一个文件映射的视图用来作为source lpMapAddress =M apViewOfFile(hMapFile, // H andle t o m apping object.FILE_MAP_READ, // R ead/write p ermission0, // M ax. o bject s ize.0, // S ize o f h File.0); // M ap e ntire f ile.PAGE_READWRITE, // R ead/write p ermission.0, // M ax. o bject s ize.dwFileLengthToWrite, // S ize o f h File. "ZipTestMappingObjectForWrite"); // N ame o f m apping o bject.if (hMapFileToWrite == N ULL){AfxMessageBox("Could n ot c reate f ile m apping o bject f or w rite");return;}lpMapAddressToWrite =M apViewOfFile(hMapFileToWrite, //Handle t o m apping object.FILE_MAP_WRITE, // R ead/write p ermission0, // M ax. o bject s ize.0, // S ize o f h File.0); // M ap e ntire f ile.if (lpMapAddressToWrite == N ULL){AfxMessageBox("Could n ot m ap v iew o f f ile");return;}//这里是将压缩前的大小保存在文件的第一个DWORD里面LPVOID p Buf =l pMapAddressToWrite;//这里就是最重要的,zlib里面提供的一个方法,将源缓存的数据压缩至目的缓存//原形如下://int c ompress (Bytef *dest, u Longf *destLen, c onst B ytef *source, u Long s ourceLen); //参数destLen返回实际压缩后的文件大小。

mfc使用手册

mfc使用手册

mfc使用手册MFC(Microsoft Foundation Class Library)是微软提供的一个类库,用于简化Windows应用程序的开发过程。

以下是MFC使用手册的简要介绍:1. 简介:MFC是一个基于C++的类库,它提供了许多用于构建Windows应用程序的类和函数。

通过使用MFC,开发人员可以快速地构建具有一致外观和感觉的应用程序,并利用Windows平台提供的各种功能。

2. 安装和配置:在开始使用MFC之前,您需要安装Microsoft Visual Studio并确保安装了MFC开发工作负载。

安装完成后,您需要创建一个新的MFC项目或打开一个现有的MFC项目。

3. 创建MFC应用程序:要创建一个新的MFC应用程序,您需要使用Microsoft Visual Studio的向导。

选择“File”菜单中的“New”选项,然后选择“Project”。

在弹出的对话框中,选择“MFC Application”并按照向导的提示完成应用程序的创建过程。

4. MFC类库:MFC提供了许多用于构建应用程序的类和函数。

以下是一些常用的MFC类:CWinApp:应用程序对象类,用于管理应用程序级别的操作,例如初始化应用程序和退出应用程序。

CWnd:窗口类,用于管理窗口的各种操作,例如创建窗口、处理消息和绘制窗口。

CDocument:文档类,用于管理应用程序中的文档数据。

CView:视图类,用于管理应用程序中的视图,例如显示文档数据和与用户交互。

5. MFC消息处理:MFC使用消息传递机制来处理用户与应用程序的交互。

每个窗口和控件都处理一组预定义的消息,例如鼠标点击、键盘输入和窗口大小改变等。

通过覆盖类中的虚函数,您可以定义应用程序如何响应这些消息。

6. MFC对话框和控件:MFC提供了许多内置的对话框和控件,例如按钮、文本框和列表框等。

您可以使用对话框编辑器来创建对话框,并将控件拖放到对话框中。

VS2010之MFC入门到精通教程

VS2010之MFC入门到精通教程

VS2010/MFC编程入门教程之目录第一部分:VS2010/MFC开发环境VS2010/MFC编程入门之前言VS2010/MFC编程入门之一(VS2010与MSDN安装过程图解)第二部分:VS2010/MFC应用程序框架VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)VS2010/MFC编程入门之四(MFC应用程序框架分析)VS2010/MFC编程入门之五(MFC消息映射机制概述)第三部分:对话框VS2010/MFC编程入门之六(对话框:创建对话框模板和修改对话框属性)VS2010/MFC编程入门之七(对话框:为对话框添加控件)VS2010/MFC编程入门之八(对话框:创建对话框类和添加控件变量)VS2010/MFC编程入门之九(对话框:为控件添加消息处理函数)VS2010/MFC编程入门之十(对话框:设置对话框控件的T ab顺序)VS2010/MFC编程入门之十一(对话框:模态对话框及其弹出过程)VS2010/MFC编程入门之十二(对话框:非模态对话框的创建及显示)VS2010/MFC编程入门之十三(对话框:属性页对话框及相关类的介绍)VS2010/MFC编程入门之十四(对话框:向导对话框的创建及显示)VS2010/MFC编程入门之十五(对话框:一般属性页对话框的创建及显示)VS2010/MFC编程入门之十六(对话框:消息对话框)VS2010/MFC编程入门之十七(对话框:文件对话框)VS2010/MFC编程入门之十八(对话框:字体对话框)VS2010/MFC编程入门之十九(对话框:颜色对话框)第四部分:常用控件VS2010/MFC编程入门之二十(常用控件:静态文本框)VS2010/MFC编程入门之二十一(常用控件:编辑框Edit Control)VS2010/MFC编程入门之二十二(常用控件:按钮控件Button、Radio Button和Check Box)VS2010/MFC编程入门之二十三(常用控件:按钮控件的编程实例)VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox)VS2010/MFC编程入门之二十五(常用控件:组合框控件Combo Box)VS2010/MFC编程入门之二十六(常用控件:滚动条控件Scroll Bar)VS2010/MFC编程入门之二十七(常用控件:图片控件Picture Control)VS2010/MFC编程入门之二十八(常用控件:列表视图控件List Control 上)VS2010/MFC编程入门之二十九(常用控件:列表视图控件List Control 下)VS2010/MFC编程入门之三十(常用控件:树形控件Tree Control 上)VS2010/MFC编程入门之三十一(常用控件:树形控件Tree Control 下)VS2010/MFC编程入门之三十二(常用控件:标签控件Tab Control 上)VS2010/MFC编程入门之三十三(常用控件:标签控件Tab Control 下)第五部分:菜单、工具栏与状态栏VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)VS2010/MFC编程入门之三十五(菜单:菜单及CMenu类的使用)VS2010/MFC编程入门之三十六(工具栏:工具栏资源及CToolBar类)VS2010/MFC编程入门之三十七(工具栏:工具栏的创建、停靠与使用)VS2010/MFC编程入门之三十八(状态栏的使用详解)第六部分:文档、视图和框架VS2010/MFC编程入门之三十九(文档、视图和框架:概述)VS2010/MFC编程入门之四十(文档、视图和框架:各对象之间的关系)VS2010/MFC编程入门之四十一(文档、视图和框架:分割窗口)第七部分:MFC常用类VS2010/MFC编程入门之四十二(MFC常用类:CString类)VS2010/MFC编程入门之四十三(MFC常用类:CTime类和CTimeSpan类)VS2010/MFC编程入门之四十四(MFC常用类:定时器Timer)VS2010/MFC编程入门之四十五(MFC常用类:CFile文件操作类)VS2010/MFC编程入门之四十六(MFC常用类:MFC异常处理)第八部分:字体和文本输出VS2010/MFC编程入门之四十七(字体和文本输出:CFont字体类)VS2010/MFC编程入门之四十八(字体和文本输出:文本输出)第九部分:图形图像VS2010/MFC编程入门之四十九(图形图像:CDC类及其屏幕绘图函数)VS2010/MFC编程入门之五十(图形图像:GDI对象之画笔CPen)VS2010/MFC编程入门之五十一(图形图像:GDI对象之画刷CBrush)第十部分:Ribbon界面开发VS2010/MFC编程入门之五十二(Ribbon界面开发:创建Ribbon样式的应用程序框架)VS2010/MFC编程入门之五十三(Ribbon界面开发:为Ribbon Bar添加控件)VS2010/MFC编程入门之五十四(Ribbon界面开发:使用更多控件并为控件添加消息处理函数)VS2010/MFC编程入门之前言鸡啄米的C++编程入门系列给大家讲了C++的编程入门知识,大家对C++语言在语法和设计思想上应该有了一定的了解了。

VS2010和MFC编程入门之3(VS2010应用程序工程中文件的组成结构)

VS2010和MFC编程入门之3(VS2010应用程序工程中文件的组成结构)

VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)这里将以前面的生成应用程序HelloWorld的文件结构为例,讲解VS2010应用程序工程中文件的组成结构。

用应用程序向导生成框架程序后,我们可以在之前设置的Location下看到以解决方案名命名的文件夹,此文件夹中包含了几个文件和一个以工程名命名的子文件夹,这个子文件夹中又包含了若干个文件和一个res文件夹,创建工程时的选项不同,工程文件夹下的文件可能也会有所不同。

如果已经以Debug方式编译链接过程序,则会在解决方案文件夹下和工程子文件夹下各有一个名为“Debug”的文件夹,而如果是Release方式编译则会有名为“Release”的文件夹。

这两种编译方式将产生两种不同版本的可执行程序:Debug版本和Release 版本。

Debug版本的可执行文件中包含了用于调试的信息和代码,而Release版本则没有调试信息,不能进行调试,但可执行文件比较小。

将所有文件分为6个部分:解决方案相关文件、工程相关文件、应用程序头文件和源文件、资源文件、预编译头文件和编译链接生成文件。

1.解决方案相关文件解决方案相关文件包括解决方案文件夹下的.sdf文件、.sln文件、.suo文件和ipch文件夹。

.sdf文件和ipch目录一般占用空间比较大,几十兆甚至上百兆,与智能提示、错误提示、代码恢复和团队本地仓库等相关。

如果你觉得不需要则可以设置不生成它们,方法是点击菜单栏Tools->Options,弹出Options对话框,选择左侧面板中Text Editor->C/C++->Advanced,右侧列表中第一项Disable Database由False改为True就可以了,最后关闭VS2010再删除.sdf文件和ipch目录以后就不会再产生了。

但关闭此选项以后也会有很多不便,例如写程序时的智能提示没有了。

.sln文件和.suo文件为MFC自动生成的解决方案文件,它包含当前解决方案中的工程信息,存储解决方案的设置。

visual c++2010 mfc实例

visual c++2010 mfc实例

visual c++2010 mfc实例Visual C++2010是一款由微软开发的集成开发环境(IDE),用于编写Windows操作系统上的应用程序。

MFC(Microsoft Foundation Classes)是Visual C++中的一个类库,它提供了一系列的类和函数,方便开发者构建Windows图形界面应用程序。

在Visual C++2010中,可以利用MFC来创建各种各样的应用程序,包括窗口应用程序、对话框应用程序、文档视图应用程序等等。

下面我们来介绍一些MFC实例,概括地展示如何使用MFC来编写Windows应用程序。

1.窗口应用程序的创建:首先,打开Visual C++2010,选择“新建项目”,在弹出的对话框中选择“Visual C++”->“MFC”->“MFC应用程序”,填写要创建的项目的名称和存储位置,点击“确定”按钮。

接下来,在“应用程序类型”选项中,选择“单文档”、“多文档”或“无文档”视图,然后在“使用的特性”选项中,选择需要的功能(如ActiveX控件等),点击“完成”按钮即可创建窗口应用程序。

2.对话框应用程序的创建:打开Visual C++2010,选择“新建项目”,在弹出的对话框中选择“Visual C++”->“MFC”->“MFC应用程序”,填写要创建的项目的名称和存储位置,点击“确定”按钮。

在接下来的对话框中,选择“对话框”作为应用程序的初始视图,点击“完成”按钮即可创建对话框应用程序。

3.消息处理:在MFC中,可以通过重写消息处理函数来响应特定的消息。

在窗口或对话框类中,可以重写相关的消息处理函数,如OnPaint、OnMouseMove等,然后在这些函数中进行相应的操作。

4.绘图操作:在MFC中,使用CDC类进行绘图操作。

可以在OnPaint函数中使用CDC对话框上的绘图设备进行绘制,也可以在自定义的函数中使用CDC类进行绘图。

VS2010之MFC入门到精通教程(1-55全部)

VS2010之MFC入门到精通教程(1-55全部)

VS2010/MFC编程入门教程之目录第一部分:VS2010/MFC开发环境VS2010/MFC编程入门之前言VS2010/MFC编程入门之一(VS2010与MSDN安装过程图解)第二部分:VS2010-MFC应用程序框架VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)VS2010/MFC编程入门之四(MFC应用程序框架分析)VS2010/MFC编程入门之五(MFC消息映射机制概述)第三部分:对话框VS2010/MFC编程入门之六(对话框:创建对话框模板和修改对话框属性)VS2010/MFC编程入门之七(对话框:为对话框添加控件)VS2010/MFC编程入门之八(对话框:创建对话框类和添加控件变量)VS2010/MFC编程入门之九(对话框:为控件添加消息处理函数)VS2010/MFC编程入门之十(对话框:设置对话框控件的Tab顺序)VS2010/MFC编程入门之十一(对话框:模态对话框及其弹出过程)VS2010/MFC编程入门之十二(对话框:非模态对话框的创建及显示)VS2010/MFC编程入门之十三(对话框:属性页对话框及相关类的介绍)VS2010/MFC编程入门之十四(对话框:向导对话框的创建及显示)VS2010/MFC编程入门之十五(对话框:一般属性页对话框的创建及显示)VS2010/MFC编程入门之十六(对话框:消息对话框)VS2010/MFC编程入门之十七(对话框:文件对话框)VS2010/MFC编程入门之十八(对话框:字体对话框)VS2010/MFC编程入门之十九(对话框:颜色对话框)第四部分:常用控件VS2010/MFC编程入门之二十(常用控件:静态文本框)VS2010/MFC编程入门之二十一(常用控件:编辑框Edit Control)VS2010/MFC编程入门之二十二(常用控件:按钮控件Button、Radio Button和Check Box)VS2010/MFC编程入门之二十三(常用控件:按钮控件的编程实例)VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox)VS2010/MFC编程入门之二十五(常用控件:组合框控件Combo Box)VS2010/MFC编程入门之二十六(常用控件:滚动条控件Scroll Bar)VS2010/MFC编程入门之二十七(常用控件:图片控件Picture Control)VS2010/MFC编程入门之二十八(常用控件:列表视图控件List Control 上)VS2010/MFC编程入门之二十九(常用控件:列表视图控件List Control 下)VS2010/MFC编程入门之三十(常用控件:树形控件Tree Control 上)VS2010/MFC编程入门之三十一(常用控件:树形控件Tree Control 下)VS2010/MFC编程入门之三十二(常用控件:标签控件Tab Control 上)VS2010/MFC编程入门之三十三(常用控件:标签控件Tab Control 下)第五部分:菜单、工具栏与状态栏VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)VS2010/MFC编程入门之三十五(菜单:菜单及CMenu类的使用)VS2010/MFC编程入门之三十六(工具栏:工具栏资源及CToolBar类)VS2010/MFC编程入门之三十七(工具栏:工具栏的创建、停靠与使用)VS2010/MFC编程入门之三十八(状态栏的使用详解)第六部分:文档、视图和框架VS2010/MFC编程入门之三十九(文档、视图和框架:概述)VS2010/MFC编程入门之四十(文档、视图和框架:各对象之间的关系)VS2010/MFC编程入门之四十一(文档、视图和框架:分割窗口)第七部分:MFC常用类VS2010/MFC编程入门之四十二(MFC常用类:CString类)VS2010/MFC编程入门之四十三(MFC常用类:CTime类和CTimeSpan类)VS2010/MFC编程入门之四十四(MFC常用类:定时器Timer)VS2010/MFC编程入门之四十五(MFC常用类:CFile文件操作类)VS2010/MFC编程入门之四十六(MFC常用类:MFC异常处理)第八部分:字体和文本输出VS2010/MFC编程入门之四十七(字体和文本输出:CFont字体类)VS2010/MFC编程入门之四十八(字体和文本输出:文本输出)第九部分:图形图像VS2010/MFC编程入门之四十九(图形图像:CDC类及其屏幕绘图函数)VS2010/MFC编程入门之五十(图形图像:GDI对象之画笔CPen)VS2010/MFC编程入门之五十一(图形图像:GDI对象之画刷CBrush)第十部分:Ribbon界面开发VS2010/MFC编程入门之五十二(Ribbon界面开发:创建Ribbon样式的应用程序框架)VS2010/MFC编程入门之五十三(Ribbon界面开发:为Ribbon Bar添加控件)VS2010/MFC编程入门之五十四(Ribbon界面开发:使用更多控件并为控件添加消息处理函数)VS2010/MFC编程入门之前言鸡啄米的C++编程入门系列给大家讲了C++的编程入门知识,大家对C++语言在语法和设计思想上应该有了一定的了解了。

mfc使用教程

mfc使用教程

mfc使用教程MFC使用教程不要标题MFC是Microsoft Foundation Class的缩写,是一套C++的库,用于开发Windows平台的应用程序。

以下是一个简单的MFC使用教程,帮助你了解如何创建一个基本的MFC应用程序。

首先,打开Visual Studio并选择创建新项目。

在项目模板中,选择"MFC应用程序"。

在下一步中,选择"对话框"作为应用程序类型。

接下来,选择项目的名称和位置,然后点击"完成"按钮。

Visual Studio将自动生成一个MFC应用程序的基本框架。

应用程序的主要代码位于"MainFrm.cpp"和"MainFrm.h"文件中。

打开"MainFrm.cpp"文件,你将看到一个名为"Create"的函数。

在这个函数中,可以创建应用程序的主窗口。

在"Create"函数的内部,使用"MFC应用程序向导"提供的函数来创建一个对话框。

例如,可以使用"CDialogEx"类来创建一个简单的对话框。

在"Create"函数的最后,需要调用"ShowWindow"函数显示主窗口,并调用"UpdateWindow"函数来更新窗口。

在"MainFrm.h"文件中,你可以定义应用程序的主窗口类。

例如,可以继承自"CFrameWnd"类,并添加自定义的成员变量和函数。

在"MainFrm.cpp"文件的"Create"函数中,还可以添加一些自定义的代码,例如设置窗口的标题和大小,添加菜单和工具栏等。

最后,编译并运行应用程序。

你应该能够看到一个简单的MFC应用程序的窗口。

MFC中文件操作

MFC中文件操作

一、C语言的文件操作通过FILE结构体实现。

1、文件的打开C语言中对文件进行操作必须首先打开文件,打开文件主要涉及到fopen函数。

fopen函数的原型为FILE*fopen(const char*path,const char*mode)示例:FILE*pFile=fopen(“1.txt”,”w”);其中path为文件路径,mode为打开方式。

1)对于文件路径,只需注意若未明确给出绝对路径,则默认该文件在工程的目录下。

若需给出绝对路径,则注意转义字符'\',比如有文件test.txt存放在C 盘根目录下,则文件路径参数值应为C:\\test.txt。

2)对于mode,主要由r,w,a,+,b,t六个字符组合而成。

r:只读方式,文件必须存在;w:只写方式,若文件存在,则原有内容会被清除;若文件不存在,则会建立文件;a:追加方式打开只写文件,只允许进行写操作,若文件存在,则添加的内容放在文件末尾;若不存在,则建立文件;+:可读可写;b:以二进制方式打开文件;t:以文本方式打开文件(默认方式下以文本方式打开文件)。

下面是常见的组合:r:以只读的方式打开文件,只允许读,此文件必须存在,否则返回NULL,打开成功后返回文件指针,位置指针指向文件头部;r+:以可读可写的方式打开文件,允许读写,此文件必须存在,否则返回NULL,打开成功后返回文件指针,位置指针指向文件头部;rb+:以可读可写、二进制方式打开文件,允许读写,此文件必须存在,否则返回NULL,打开成功后返回文件指针,位置指针指向文件头部;rt+:以可读可写、文本方式打开文件,允许读写,此文件必须存在,否则返回NULL,打开成功后返回文件指针,位置指针指向文件头部;w:以只写的方式打开文件,只允许写,若文件存在,文件中原有内容会被清除;若文件不存在,则创建文件,打开成功后返回文件指针,位置指针指向文件头部;w+:以读写的方式打开文件,允许读写,若文件存在,文件中原有内容会被清除;若文件不存在,则创建文件,打开成功后返回文件指针,位置指针指向文件头部;a:以追加、只写的方式打开文件,只允许写。

Microsoft Visual Studio 2010 MFC 软件功能列表

Microsoft Visual Studio 2010 MFC 软件功能列表

Microsoft Visual Studio 2010 MFC 软件功能列表目录编辑状态 (7)文件(F) (7)新建(N) (7)打开(O) (7)添加(D) (8)源代码管理(R) (8)最近的文件(F) (8)最近使用的项目和解决方案(J) (8)将ImageCapture.h移入(I) (9)编辑(E) (9)查找和替换(F) (9)高级(V) (10)书签(K) (10)大纲显示(O) (10)IntelliSense(I) (11)视图(V) (11)查找结果(N) (11)其他窗口(E) (12)工具栏(T) (13)VassistX (14)Refactor (14)Surround With VA Snippet (15)Tools (15)项目(P) (16)生成(B) (16)仅用于项目(J) (16)按配置优化(P) (17)调试(D) (17)窗口(W) (17)新建断点(B) (17)IntelliTrace(I) (18)团队(M) (18)数据(A) (18)架构比较(H) (18)数据比较(D) (19)Transact-SQL 编辑器(E) (20)架构视图(V) (21)工具(T) (21)宏 (21)体系结构(C) (22)生成依赖关系图(G) (22)选择活动的测试设置(G) (23)编辑测试设置(S) (23)窗口(W) (23)分析(N) (23)探查器(R) (24)窗口(W) (24)窗口(W) (25)帮助(H) (25)调试状态(正在运行) (26)文件(F) (26)新建(N) (26)打开(O) (26)源代码管理(R) (27)最近的文件(F) (27)最近使用的项目和解决方案(J) (27)将ImageCapture.h移入(I) (27)编辑(E) (28)查找和替换(F) (28)高级(V) (29)书签(K) (29)大纲显示(O) (29)IntelliSense(I) (30)视图(V) (30)查找结果(N) (30)其他窗口(E) (31)工具栏(T) (32)VassistX (33)Refactor (33)Surround With VA Snippet (34)Tools (34)项目(P) (35)生成(B) (35)仅用于项目(J) (35)按配置优化(P) (36)调试(D) (36)窗口(W) (37)新建断点(B) (37)IntelliTrace(I) (38)团队(M) (38)数据(A) (38)架构比较(H) (38)数据比较(D) (38)Transact-SQL 编辑器(E) (38)架构视图(V) (39)工具(T) (39)测试(S) (40)运行(R) (40)调试(D) (41)选择活动的测试设置(G) (41)编辑测试设置(S) (41)窗口(W) (41)分析(N) (41)探查器(R) (42)窗口(W) (42)窗口(W) (43)帮助(H) (43)窗口 (44)文件 (44)新建项目 (44)新建网站 (45)团队项目 (45)新建文件 (46)从现有代码创建项目 (46)打开项目 (47)打开网站 (48)打开团队项目 (48)打开文件 (49)转换 (49)添加新建项目 (50)添加新网站 (50)添加现有项目 (51)添加现有网站 (52)另存文件为 (53)高级保存选项 (53)更改源代码管理 (54)页面设置 (54)打印 (55)编辑 (55)循环应用剪贴板中的复制项 (55)快速查找 (56)快速替换 (56)在文件中查找 (57)在文件中替换 (57)查找符号 (58)转到行 (58)定位到 (59)插入文件 (59)查看空白 (60)自动换行 (60)视图 (60)调用层次结构 (61)类视图 (62)代码定义窗口 (63)对象浏览器 (63)输出 (64)起始页 (64)属性管理器 (65)资源视图 (65)工具箱 (66)查找结果 (66)命令窗口 (67)Web浏览器 (68)层资源管理器 (68)Macro资源管理器 (69)源代码管理资源管理器 (69)UML模型资源管理器 (69)文档大纲 (70)错误列表 (70)历史记录 (71)挂起的更改 (71)任务列表 (72)F# Interactive (72)性能资源管理器 (73)代码度量结果 (74)属性页 (74)项目 (75)添加类 (75)MFC类向导 (76)添加资源 (76)添加新项 (77)批生成 (77)配置管理器 (78)调试 (78)断点 (78)即时窗口 (79)启动向导 (79)选择要比较的分析文件 (80)并行堆栈 (80)并行任务 (80)监视 (80)自动窗口 (80)调用堆栈 (81)线程 (81)模块 (81)异常 (83)新建断点 (83)导入数据提示 (84)选项 (84)数据 (85)新建架构比较 (85)新建数据比较 (85)查询选项 (86)工具 (87)连接到数据库引擎 (87)选择数据源 (87)添加服务器 (88)代码段管理器 (88)选择工具箱 (89)外接程序管理器 (89)添加宏项目 (90)新建宏项目 (90)扩展管理器 (91)Dotfuscator Community Edition (91)ILDasm (92)创建GUID (93)错误查找 (93)ATL/MFC跟踪工具 (94)Spy++ (95)WCF服务配置编辑器 (96)外部工具 (96)导入和导出设置向导 (97)自定义 (98)体系结构 (99)添加新关系图 (99)测试 (100)添加新测试 (100)加载元数据文件 (101)创建新测试列表 (101)管理测试控制器 (102)测试视图 (103)测试列表编辑器 (103)测试结果 (103)代码覆盖率结果 (104)测试运行 (104)测试影响视图 (104)分析 (104)性能资源管理器 (104)将探查器附加到进程 (105)窗口 (106)帮助 (107)查看帮助 (107)管理帮助设置 (107)客户体验改善计划 (108)注册产品 (108)关于 (109)编辑状态文件(F)新建(N)打开(O)添加(D)源代码管理(R)标签最近的文件(F)最近使用的项目和解决方案(J)将ImageCapture.h移入(I)编辑(E)查找和替换(F)高级(V)书签(K)大纲显示(O)IntelliSense(I)视图(V)查找结果(N)其他窗口(E)工具栏(T)VassistXRefactorSurround With VA SnippetTools项目(P)生成(B)仅用于项目(J)按配置优化(P)调试(D)窗口(W)新建断点(B)IntelliTrace(I)团队(M)数据(A)架构比较(H)导出到排列定义数据比较(D)导出到Transact-SQL 编辑器(E)连接结果显示为架构视图(V)工具(T)宏体系结构(C)生成依赖关系图(G)窗口(W)测试(S)运行(R)调试(D)选择活动的测试设置(G)编辑测试设置(S)窗口(W)分析(N)窗口(W)帮助(H)调试状态(正在运行)文件(F)新建(N)打开(O)源代码管理(R)标签最近的文件(F)最近使用的项目和解决方案(J)将ImageCapture.h移入(I)编辑(E)查找和替换(F)高级(V)书签(K)大纲显示(O)IntelliSense(I)视图(V)查找结果(N)其他窗口(E)工具栏(T)VassistXRefactorSurround With VA SnippetTools项目(P)生成(B)仅用于项目(J)按配置优化(P)调试(D)窗口(W)监视(W)内存(M)新建断点(B)IntelliTrace(I)团队(M)数据(A)架构比较(H)数据比较(D)Transact-SQL 编辑器(E)架构视图(V)工具(T)宏体系结构(C)生成依赖关系图(G)窗口(W)测试(S)运行(R)调试(D)选择活动的测试设置(G)编辑测试设置(S)窗口(W)分析(N)窗口(W)帮助(H)窗口文件新建项目团队项目从现有代码创建项目打开团队项目转换添加新建项目添加新网站。

visual c++2010 mfc实例

visual c++2010 mfc实例

visual c++2010 mfc实例MFC(Microsoft Foundation Classes)是微软公司为Windows操作系统开发的一套基于C++的编程框架,它允许开发人员使用面向对象的方式构建Windows应用程序。

在Visual C++ 2010中,MFC库得到了全面的支持,提供了丰富的工具和功能,可以快速开发Windows界面应用程序。

MFC实例的一个常见应用是创建一个基本的窗口应用程序。

下面我们来看一个简单的实例,展示如何使用Visual C++ 2010 MFC创建一个窗口应用程序。

首先,打开Visual C++ 2010,选择“新建项目”并选择“MFC应用程序”。

在下一步中,选择“对话框”作为应用程序类型,并为项目命名。

接下来,我们需要设计一个用户界面。

在MFC中,用户界面是通过对话框来实现的。

双击“resource.h”文件,打开资源编辑器。

在资源编辑器中,可以创建对话框,并在其中添加所需的控件,比如按钮、标签等。

可以使用拖放的方式将这些控件添加到对话框中,并设置它们的属性。

在窗口应用程序中,通常需要在用户点击按钮时执行某些操作。

在资源编辑器中双击某个按钮,会自动为这个按钮生成一个事件处理函数。

在这个函数中,可以编写所需的逻辑代码。

例如,可以在点击按钮时显示一个消息框,可以使用以下代码来实现:```void CMyDialog::OnButtonClick(){MessageBox(L"Hello, World!", L"提示", MB_OK);}```这个函数会在用户点击按钮时被调用,并显示一个消息框。

在完成界面设计和事件处理函数编写后,还需要修改应用程序的入口点。

打开“MainFrm.cpp”文件,找到“CMainFrame::OnCreate”函数。

在这个函数中,会创建主窗口。

可以在此处设置主窗口的标题、样式等属性。

最后,点击“生成”菜单中的“生成解决方案”选项,编译并运行应用程序。

第10章 MFC中的文件操作

第10章 MFC中的文件操作
第10章 MFC的文件操作 南阳理工学院软件学院
10.1 MFC中的文件操作
CFile是建立在32位Windows文件操作体系 之上,封装了部分Windows文件操作函数, 在Windows环境下,使用CFile及其或派生 类的对象来操作文件,当然也可以从这些类 派生自己的文件操作类,建议使用统一的 CFile接口,可以提高程序的移植性。MFC 用类封装了文件操作函数,并且以CFile为 基础,派生了几个常用类,如CStdioFile、 CMemFile等。
第10章 MFC的文件操作
南阳理工学院软件学院
10.2.1 CFile类
1.OpenFlags:OpenFlags定义了13种文件 访问与共享模式; 2.Attribute:Attribute定义了文件的属性, 分别为正常、只读、隐含、系统、卷或者目录 等; 3.SeekPosition:SeekPosition定义了三种 文件位置:头、尾、当前; 4. hFileNull:hFileNull定义了空文件句柄。
√ √

√ √ 改名和删除 √
GetFilePath
SetFilePath SetStatus
Rename
MoveFile

Remove
DeleteFile
第10章 MFC的文件操作
南阳理工学院软件学院
10.2.2 CFile的成员函数
CFile类的构造函数和文件打开与创建的过程 1.构造函数CFile()
南阳理工学院软件学院
10.2.2 CFile的成员函数
表10-1 CFile成员函数对Windows文件函数的封装
√ GetLength 调用Seek成员函数

文件的锁定/解锁 √ √ 文件状态操作函数

MFC文件操作

MFC文件操作

MFC文件操作1.文件的查找当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。

MFC中有一个专门用来进行文件查找的类CFileFind,使用它可以方便快捷地进行文件的查找。

CString strFileTitle;CFileFind finder;bool bWork=finder.FindFile("C:\\windows\\sysbkup\\*.cab"); while(bWorking){bWorking=finder.FindNextFile();strFileTitle=finder.GetFileTitle();}2.文件的打开/保存对话框让用户选择文件进行打开和存储操作时,就要用到文件打开/保存对话框。

MFC的类CFileDialog用于实现这种功能。

使用CFileDialog声明一个对象时,第一个BOOL型参数用于指定文件的打开或保存,当为TRUE时将构造一个文件打开对话框,为FALSE时构造一个文件保存对话框。

在构造CFileDialog对象时,如果在参数中指OFN_ALLOWMULTISELECT 风格,则在此对话框中选择多个文件。

此时要重点注意为CFileDialog 对象的m_ofn.lpstrFile分配一块内存,用于存储多选操作所返回的所有文件路径名,如果不进行分配或分配的内存过小就会导致操作失败。

CFileDialog dlg(TRUE, NULL, "*.*",OFN_HIDEREADONLY |OFN_ALLOWMULTISELECT, "Data files (*.dat;*.fbf)|*.dat;*.fbf||",this);dlg.m_ofn.lStructSize = 88;dlg.m_ofn.lpstrFile = new TCHAR[64000];memset(dlg.m_ofn.lpstrFile,0,64000);dlg.m_ofn.nMaxFile = 64000;POSITION mPos=mFileDlg.GetStartPosition();Cstring pathName;while(mPos!=NULL){pathName=mFileDlg.GetNextPathName(mPos);}CFileDialog 用于取文件名的几个成员函数:假如选择的文件是C:\WINDOWS\TEST.EXE(1)GetPathName();取文件名全称,C:\WINDOWS\TEST.EXE(2)GetFileTitle();取文件全名:TEST.EXE(3)GetFileName();取回TEST(4)GetFileExt();取扩展名EXE3.文件的读写1.打开/创建文件CFile file;file.Open(_T("test.txt"),CFile::modeCreate|CFile::modeNoTru ncate|CFile::modeReadWrite);文件打开模式可组合使用,用“|”隔开,常用的有以下几种:CFile::modeCreate:以新建方式打开,如果文件不存在,新建;如果文件已存在,把该文件长度置零,即清除文件原有内容。

MFC中文件操作、查找与选择总结资料

MFC中文件操作、查找与选择总结资料

MFC总结(一):MFC中文件操作、查找与选择总结(1)本文主要涉及以下几个方面,均为在MFC编程中较为常用的:CFile操作、CArchive操作、如何选择文件和文件夹、如何查找文件、获取当前目录、_access函数等。

(一)使用CFile类操作文件CFile类在MFC的文件操作中应该是最常用的了。

主要的成员函数有Open、Close、Write、Read、Seek、SeekToEnd、GetLength、GetPosition,具体用法见MSDN。

(1)文件打开操作:文件打开有两种方式,一种是先定义类对象,在用Open函数打开;一种是在定义类对象时传入文件名和打开方式。

分别如下CFile file;if(!file.Open(lpszFileName, nOpenFlags ))return;或CFile file(lpszFileName, nOpenFlags);(2)文件打开方式:文件打开方式,即上述nOpenFlags的值主要由一些宏定义的值组合而成,具体见MSDN,常用的有如下几种:A. CFile::modeCreate | CFile::modeNoTruncate |CFile::modeWrite,以写文件的方式打开,如果文件不存在,则新建文件,否则打开已有文件进行写入操作,此时不会清空原有文件;B. 将上述CFile::modeWrite更换为CFile::modeRead或者CFile::modeReadWrite可实现读操作或者同时读写。

(3)判断文件结束判断文件是否结束,没有结束则继续读取,否则关闭退出。

这点在编程时常用。

对于CFile常用的判断文件结束的方法是:while(file.GetPosition() < file.GetLength()){ //文件未结束//Add code ....}(4)值得注意的几点:A. 当文件名中包含路径时,要注意使用\\,如C:\\MyFile.DAT,在Unicode下时,需要使用_T("C:\\MyFile.DAT");B. 采用(2)中A方式写文件时,注意使用file.SeekToEnd()将文件指针移至文件尾,再写入,否则会覆盖已有的数据,这点经常被很多初学者忽视;C. 在打开文件后就要紧接着写下Close,养成这样的习惯,避免忘记关闭文件。

Visual C++教程 第10章 创建MFC Windows应用程序

Visual C++教程 第10章 创建MFC Windows应用程序
框架应用程序的一个重要特征. 框架应用程序的一个重要特征.它的实质就 是将数据本身与用户对数据的观察和操作分 离开来, 离开来,所有的数据变化都在文档类中进行 管理,同时为视图的访问提供一个接口. 管理,同时为视图的访问提供一个接口.而 视图则调用这个接口来响应用户的操作, 视图则调用这个接口来响应用户的操作,进 行数据修改,并不断更新文档的显示. 行数据修改,并不断更新文档的显示.由此 可知,允许一个文档拥有多个视图. 可知,允许一个文档拥有多个视图.
(Document)和视图(View).在使用MFC框架编 Document)和视图(View).在使用MFC框架编 和视图 MFC Windows应用程序时 应用程序时, 写Windows应用程序时,程序员最常编写的部 分就是文档类和视图类
文档和视图
把一个应用分成文档和视图的结构是基于MFC 把一个应用分成文档和视图的结构是基于MFC
Library). Foundation Class Library). 这个类库是在 Microsoft Windows 中进行程序设计 的应用程序框架.MFC的所有代码都是用 的应用程序框架.MFC的所有代码都是用 C++ 编写 的,并提供了许多代码以方便程序设计人员完成各 种任务,例如管理窗口,菜单和对话框, 种任务,例如管理窗口,菜单和对话框,执行基本 输入/输出,存储数据对象集合等. 输入/输出,存储数据对象集合等.程序设计人员只 须将自己要创建的应用程序的相关代码添加到这个 框架中就可以完成相关功能.由于C++ C++具有面向对象 框架中就可以完成相关功能.由于C++具有面向对象 程序设计的性质,所以可以容易地扩展或重写MFC MFC框 程序设计的性质,所以可以容易地扩展或重写MFC框 架所提供的各种基本功能. 架所提供的各种基本功能.

vs2010mfc课程设计

vs2010mfc课程设计

vs2010mfc课程设计一、课程目标知识目标:1. 学生能理解VS2010 MFC的基本概念,掌握MFC框架的构成及其功能。

2. 学生能掌握使用VS2010 MFC创建Windows应用程序的基本步骤和方法。

3. 学生能了解并运用MFC中的常用控件,如按钮、文本框、列表框等。

技能目标:1. 学生能运用VS2010 MFC开发环境创建简单的Windows应用程序。

2. 学生能通过MFC控件进行界面设计,实现基本的用户交互功能。

3. 学生能运用调试工具对MFC应用程序进行调试和错误排查。

情感态度价值观目标:1. 培养学生对编程的兴趣,提高他们学习计算机技术的积极性。

2. 培养学生的团队协作意识,使他们学会在项目开发中与他人合作。

3. 培养学生严谨、细致的学习态度,使他们养成良好的编程习惯。

分析课程性质、学生特点和教学要求:1. 课程性质:本课程为计算机专业选修课程,旨在让学生掌握VS2010 MFC 的开发技能。

2. 学生特点:学生已具备一定的C++编程基础和Windows操作系统知识。

3. 教学要求:结合学生特点和课程性质,注重实践操作,培养学生的动手能力。

1. VS2010 MFC基础入门- MFC概述:介绍MFC的概念、发展历程和应用领域。

- MFC程序结构:分析MFC程序的构成,包括项目文件、源文件、头文件等。

2. MFC应用程序创建与调试- 创建MFC应用程序:学习使用VS2010创建MFC应用程序的方法。

- 调试MFC应用程序:掌握使用调试工具进行程序调试的技巧。

3. MFC界面设计与控件使用- 界面设计:学习MFC界面设计的基本原则和方法。

- 常用控件:学习并实践MFC中的常用控件,如按钮、文本框、列表框等。

4. MFC事件处理与消息映射- 事件处理:了解MFC中事件处理机制,学习如何为控件添加事件处理函数。

- 消息映射:掌握MFC消息映射表的使用,学习如何处理自定义消息。

5. 实践项目:开发一个简单的MFC应用程序- 实践项目安排:将教学内容应用于实际项目中,巩固所学知识。

MFC控件使用详细教程

MFC控件使用详细教程

MFC控件使用详细教程MFC(Microsoft Foundation Classes)是微软公司开发的一套面向对象的C++类库,旨在简化Windows应用程序的开发。

其中包括了一系列的控件类,用于构建Windows用户界面。

本文将介绍MFC控件的使用,并提供详细的教程。

1.创建MFC应用程序首先,打开Visual Studio开发环境,选择创建MFC应用程序项目。

在项目向导中,选择“对话框”应用程序类型。

2.添加控件到对话框在MFC应用程序中,用户界面的主要组成部分是对话框。

打开对话框资源文件(通常是一个名为“MainDlg”的文件),可以看到空白的对话框。

从工具箱中选择所需的控件,例如按钮(Button)、文本框(Edit Control)等。

点击工具箱中的控件,然后在对话框上绘制一个矩形,即可在对话框中添加该控件。

3.设置控件属性选中添加的控件,可以在“属性”窗口中设置其属性。

例如,可以设置按钮的文本、大小、位置等。

4.响应控件事件控件可以触发各种事件,例如按钮点击事件。

为了响应这些事件,我们需要添加相应的事件处理程序。

在资源视图中,右键点击对话框资源文件,选择“添加事件处理程序”。

然后,选择要响应的事件,例如按钮的点击事件。

在出现的对话框中,输入事件处理程序的名称,并选择成员变量的名称。

点击“确定”后,Visual Studio会自动生成事件处理程序的代码。

5.控件的常用操作- 设置控件的文本:使用SetWindowText函数,例如SetWindowText("Hello");- 获取控件的文本:使用GetWindowText函数,例如CString str; GetWindowText(str);- 启用或禁用控件:使用EnableWindow函数,例如EnableWindow(FALSE)可以禁用控件;- 显示或隐藏控件:使用ShowWindow函数,例如ShowWindow(SW_HIDE)可以隐藏控件;- 设置或获取控件的位置、大小:使用SetWindowPos和GetWindowRect函数,例如SetWindowPos(NULL, x, y, width, height)可以设置控件的位置和大小;- 样式和外观设置:使用ModifyStyle和SetWindowLong函数,例如在按钮上设置图标和文字风格。

vs2010mfc多文档添加菜单

vs2010mfc多文档添加菜单

VS2010添加菜单MFC class wizard(类向导)project:当前工程名class name:需要编辑消息映射(将消息与处理函数一一对应)的类名object ID:该类中当前可以产生消息的对象ID。

Message:该对象能产生的消息Member function:该类的成员函数。

可以添加(Add function),删除(Delete fun…)。

Add class:添加新的类。

右下有个小箭头,可以选择‚new‛或从类库中导入。

SDI:单文档MDI:多文档1.创建MDI工程:打开VS2010,文件,新建,project,选MFC应用程序(MFC AppWizard),填入名称:Menu1,确定。

选多个文档,完成。

编译运行一下,弹出的窗口是Menu11:2.完成后在左侧点资源视图,Menu,IDR_Menu1TYPE,会发现,Menu框架中已经有了‚文件,编辑,视图,帮助‛等菜单。

单击‚帮助‛后面的‚请在此处输入‛,并输入‚Movie(&M)‛,输入(&M)的作用是用户可通过‚Alt+m‛直接打开该菜单项,输入后‘&’自动消失。

左下角的‚菜单编辑项‛中,enable和popup默认为true。

因为Popup为true,即允许有子菜单弹出,所以不用输入ID,下面杂项的ID 为‚无法编辑ID‛。

2.单击Movie下面的框,并在里面输入‘赤壁之战(&C)’。

(&C)表示直接在键盘上按‘C’,即可选择‚赤壁之战‛。

这时,他变成了这个样子,并且左下角的‘菜单编辑器’里出现了内容。

在菜单编辑器里,注意到popup为false,这是可以编辑ID,向下拉菜单,在‚杂项‛中,将ID改为ID_MOVIE1,在Prompt中填入‚打开赤壁电影‛。

此处,直接单击,就可以修改或输入。

3.为菜单添加消息处理函数直接在最上一行菜单栏选‘项目’,类向导,弹出class wizard。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第10章
MFC中的文件操作
主要内容
10.1 MFC中的文件操作 10.2 文件类CFile和CStdioFile 10.3 文件对话框 10.4 文件操作举例
10.1 MFC中的文件操作
使用Visual C++进行程序设计时,进行文 件操作可以用以下方法。
(1)使用标准C运行库函数,包括fopen、 fclose、fseek等。 (2)使用Win16下的文件和目录操作函数, 如lopen、lclose、lseek等,这些函数主要是 为了向后兼容而保留的,不建议使用。
调用Seek成员函数 SetEndOfFile
LockRange UnlockRange
LockFile UnlockFile
GetPosition GetStatus(CFileStatus&) GetStatus(LPSTR lpszFileName CFileStatus&) GetFileName GetFileTitle GetFilePath SetFilePath SetStatus
本章的文件操作主要介绍MFC的标准文件访 问方式,也就是CFile及其派生类的应用。
10.1 MFC中的文件操作
在Windows环境下,打开和创建文件都是 由CreateFile函数完成的,操作成功时,返 回一个Windows下的句柄,关闭文件使用 Windows的CloseHandle函数,不同于 “C”的fopen返回的句柄,在16位 Windows环境下,该句柄和C运行库文件操 作函数兼容,但是在32位以后的Windows 版本中,“C”的文件操作函数不能使用该 句柄,如果需要,可以使用函数 _open_osfhandle将32位Windows句柄 转换成一个“C”文件函数使用的文件句柄。
10.2.2 CFile的成员函数
CFile的成员函数是对Windows文件操作函数的 封装,如打开、创建、关闭文件、文件指针定位、 文件的锁定与解锁、文件状态的读取和修改等。 其中用到m_hFile文件句柄的一般都是虚函数, 和此无关的一般是静态成员函数。大部分成员函 数都被映射到了对应的Windows API函数,如表 10-1所示。
10.2.1 CFile类
CFile除了定义枚举类型外,还定义了一些成 员变量,如:
UINT m_hFile;
BOOL m_bCloseOnDelete;
CString m_strFileName;
第1个成员变量是public访问权限,保存CreateFile函数返回 的文件句柄。MFC重载了运算符号HFILE来返回m_hFile, 这样在使用HFILE类型变量时,就可以使用CFile对象。 后两个成员变量是protected访问权限, m_bCloseOnDelete用来指示是否在关闭文件时删除CFile 对象,m_strFileName用来保存文件名。
10.1 MFC中的文件操作
CFile是建立在32位Windows文件操作体系 之上,封装了部分Windows文件操作函数, 在Windows环境下,使用CFile及其或派生 类的对象来操作文件,当然也可以从这些类 派生自己的文件操作类,建议使用统一的 CFile接口,可以提高程序的移植性。MFC 用类封装了文件操作函数,并且以CFile为 基础,派生了几个常用类,如CStdioFile、 CMemFile等。
10.2 文件类CFile和CStdioFile
10.1 MFC中的文件操作 10.2 文件类CFile和CStdioFile 10.3 文件对话框 10.4 文件操作举例
10.2.1 CFile类
CFile类定义了一些和文件操作相关的枚举 类型常量,经常用到的有4种:OpenFlags、 Attribute、SeekPosition、hFileNull。
10.2.2 CFile的成员函数
表10-1 CFile成员函数对Windows文件函数的封装
虚拟
静态
成员函数
对应的Win32函数
文件的创建、打开、关闭

Abort
CloseHandle
表10-1 CFile成员函数对Windows文件函数的封装

Duplicate
DuplicateHandle

SeekToBegin
调用Seek成员函数
SeekToEnd
调用Seek成员函数
10.2.2 CFile的成员函数
√ √ 文件的锁定/解锁 √ √ 文件状态操作函数 √
√ √ √ √ √
√ 改名和删除
√ √
表10-1 CFile成员函数对Windows文件函数的封装
GetLength SetLength
(3)使用Win32下的文件和目录操作函数, 如CreateFile、CopyFile、DeleteFile、 FindNextFile等。
10.1 MFC中的文件操作
(4)使用CFile及其派生类进行文件操作。 CFile是从CObject派生的,其派生类包括操 作文本文件的CStdioFile,操作内存文件的 CMemFile等。
10.2.1 CFile类
1.OpenFlags:OpenFlags定义了13种文件 访问与共享模式; 2.Attribute:Attribute定义了文件的属性, 分别为正常、只读、隐含、系统、卷或者目录 等; 3.SeekPosition:SeekPosition定义了三种 文件位置:头、尾、当前; 4. hFileNull:hFileNull定义了空文件句柄。
Open
CreateFile

Close
CloseHandle
文件的读写

Read
ReadFile
ReadHuge(向后兼容)
调用Read成员函数

Write
WriteFile
WriteHuage(向后兼容)
调用Write成员函数

Flush
FlushFileBuffers
文件定位

Seek
SetFilePointer
SetFilePointer GetFileTime,GetFileSize等 FindFirstFile 不是简单地映射到某个函数
Rename Remove
MoveFile DeleteFile
相关文档
最新文档