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类 |
- void PASCAL CFile::Remove(LPCTSTR lpszFileName)
- {
- if (!::DeleteFile((LPTSTR)lpszFileName))
- CFileException::ThrowOsError((LONG)::GetLastError(),
- lpszFileName);
- }
原来如此!MFC提供的CFile,其Remove()函数实际上就是简单的调用一下Windows API"DeleteFile()"而已!
现在动手
使用MFC进行Windows编程(www.cppentry.com),不再是一种痛苦,如下即为使用CFile操作文件的例子,为了让我们的控制台程序支持MFC,请参考2.4.2小节"让控制台程序支持MFC/ATL"。
【程序 2-16】使用CFile输出茴字
- 01 #include "stdafx.h"
- 02
- 03 #include <afx.h>
- 04
- 05 int main()
- 06 {
- 07 //写入文件
- 08 CFile file;
- 09 if(file.Open(_T("test.out"), CFile::modeCreate | CFile::modeWrite))
- 10 {
- 11 char line[256] = "茴香豆的茴";
- 12 file.Write(line, sizeof(line));
- 13 file.Close();
- 14 }
- 15
- 16 //读取文件
- 17 if(file.Open(_T("test.out"), CFile::modeRead))
- 18 {
- 19 char line[256];
- 20 if(file.Read(line, 256) != 0)
- 21 {
- 22 printf("%s\r\n", line);
- 23 }
- 24
- 25 file.Close();
- 26 }
- 27
- 28 return 0;29 }
使用MFC类,传统的面向函数的编程(www.cppentry.com)接口即转换成MFC类对象的接口,这样一来,代码的安全性和可读性得以大大提高。
光盘导读
该项目对应于光盘中的目录"\ch02\ MfcFileWriter"。
【责任编辑:云霞 TEL:(010)68476606】
| 回书目 上一节 下一节 |

