设为首页 加入收藏

TOP

2.5.6 使用MFC/ATL
2013-10-07 00:50:11 来源: 作者: 【 】 浏览:70
Tags:2.5.6 使用 MFC/ATL

2.5.6  使用MFC/ATL

MFC更多的工作在于:它们将Widnows API函数包装成对象类及其成员函数。MFC的这种中间位置与标准C++(www.cppentry.com)很类似,只不过它仅用于Windows操作系统,MFC的位置如图2-54所示。

比如,针对文件的操作,MFC就封装了CFile类,CFile的UML类图简略如图2-55所示。

  
(点击查看大图)图2-54  MFC/ATL的位置
 
图2-55  MFC封装的CFile类
如果我们再较真一点地话,就可以通过调试等手段进入到CFile::Remove()函数的定义,来观察CFile的庐山真面目:
  1. void PASCAL CFile::Remove(LPCTSTR lpszFileName)  
  2. {  
  3.     if (!::DeleteFile((LPTSTR)lpszFileName))  
  4.         CFileException::ThrowOsError((LONG)::GetLastError(),  
  5. lpszFileName);  

原来如此!MFC提供的CFile,其Remove()函数实际上就是简单的调用一下Windows API"DeleteFile()"而已!

现在动手

使用MFC进行Windows编程(www.cppentry.com),不再是一种痛苦,如下即为使用CFile操作文件的例子,为了让我们的控制台程序支持MFC,请参考2.4.2小节"让控制台程序支持MFC/ATL"。

【程序 2-16】使用CFile输出茴字

  1. 01  #include "stdafx.h" 
  2. 02    
  3. 03  #include <afx.h>  
  4. 04    
  5. 05  int main()  
  6. 06  {  
  7. 07      //写入文件  
  8. 08      CFile file;  
  9. 09      if(file.Open(_T("test.out"), CFile::modeCreate | CFile::modeWrite))  
  10. 10      {  
  11. 11          char line[256] = "茴香豆的茴";  
  12. 12          file.Write(line, sizeof(line));  
  13. 13          file.Close();  
  14. 14      }  
  15. 15    
  16. 16      //读取文件  
  17. 17      if(file.Open(_T("test.out"), CFile::modeRead))  
  18. 18      {  
  19. 19          char line[256];  
  20. 20          if(file.Read(line, 256) != 0)  
  21. 21          {  
  22. 22              printf("%s\r\n", line);  
  23. 23          }  
  24. 24    
  25. 25          file.Close();  
  26. 26      }  
  27. 27    
  28. 28      return 0;29 } 

使用MFC类,传统的面向函数的编程(www.cppentry.com)接口即转换成MFC类对象的接口,这样一来,代码的安全性和可读性得以大大提高。

光盘导读

该项目对应于光盘中的目录"\ch02\ MfcFileWriter"。

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.5.5 使用CRT库的安全版本 下一篇2.5.1 使用Windows API

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: