⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 11.4.2 元文件的保存与打开.txt

📁 网上第一本以TXT格式的VC++深入详解孙鑫的书.全文全以TXT格式,并每一章节都分了目录,清晰易读
💻 TXT
字号:
11 .4.2 元文件的保存与打开
接下来,我们希望把保存图形绘制命令的元文件保存为磁盘文件,以便在以后需要时
随时可以打开该文件,并在程序窗口中显示其中的图形内容。于是为 Graphic程序的 

CGraphicView类分别添加【文件】子菜单下的【打开】和【保存】菜单命令的响应函数,

然后在这两个命令响应函数(分别为 OnFileOpen和 OnFileSave )中分别实现元文件的打

开和保存。
为了保存元文件,可以使用 CopyMetaFile函数,该函数的作用是把 Windows元文件
的内容复制到指定的文件。该函数的声明形式如下所示 : 

m
HMETAFILE CopyMetaFile( HMETAFILE hmfSrc ,LPCTSTR lpszFile
CopyMetaFile函数有两个参数,含义分别如下所述 : 
. hmfSrc 
指定要复制的 Windows元文件的句柄: 
. lpszFile 
指定复制目标文件名称。我们在Graphic程序的 OnFileSave函数中添加如例 11-13所示的代码,以
实现元文件的保存。
例 11-13 

void CGraphicView : :OnFileSave() 
HMETAFILE hmetaFile; 
hmetaFile=m_dcMetaFile.Close(); 

CopyMetaFile(hmetaFile, "meta.wmf" ) ; 
m_dcMetaFile.Create() ; 
DeleteMetaFile(hmetaFile) ; 
在上述例 11-13所示代码中,首先定义一个 HMETAFILE类型的元文件句柄变量,接着调用元文件设
备上下文的 Close成员函数得到对应的元文件句柄,然后调用 CopyMetaFile函数将该元文件句柄所
指向的元文件中的内容复制到指定的磁盘文件: . meta.wmf中。对元文件来说,当把它的内容保存
为一个磁盘文件时,通常将其扩展名取为 "wmf",即 "Windows Meta File"的缩写。复制操作完成
之后,需要重新再创建一个元文件 DC,以备下一次绘制图形使用。这时,对于己得到的元文件句柄: 
hmetaFile来说,它所标识的元文件就不再需要了,所以将其删除。
再次运行 Graphic程序,利用【绘图\直线】菜单项在程序窗口中绘制一条直线,然后利用【文件飞
保存】菜单命令保存元文件内容,这时可以发现 Graphic程序目录下多了一个文件: meta.wmf。
接下来在 Graphic程序中实现将刚才己保存的元文件打开这一功能。这时需要利用 GetMetaFile函
数得到指定元文件的句柄。在 Win32 API中己经废弃这个函数了, Win32 应用程序应该使用 
GetEnhMetaFile函数创建一个增强型元文件句柄(关于增强型元文件的知识,读者可以自行查看 
MSDN中的相关资料〉。但是在程序中仍可以使用 GetMetaFile这个函数来得到元文件句柄,这主要
是为了兼容 Windows的 16位版本。所以在 Graphic程序的 OnFileOpen函数中添加如例 11哺 14所
示代码,以实现元文件的打开。
侈IJ 11-14 
void CGraphicView : :OnFileOpen() 
HMETAFILE hmetaFile: 
hmetaFile=GetMetaFile("meta.wmf"); 
m_dcMetaFile.PlayMetaFile(hmetaFile) ; 
DeleteMetaFile(hmetaFile); 
invalidate () ; 

在上述例 11-14所示代码中,首先利用 GetMetaFile函数获得指定元文件: meta.wmf 的句柄。接着
就在元文件设备上下文中播放该元文件,这样,该元文件包含的图形绘制命令就被记录下来了。播
放之后,对于元文件句柄: hmetaFile来说,己经没有用处了,所以将其删除。上述代码的最后调用
Invalidate函数以引起窗口的重绘,这样程序就会调用 OnDraw函数。前面我们己经在 OnDraw函数
中调用当前窗口设备上下文 (pDC)的 PlayMetaFile函数在当前窗口中播放元文件,因此这时程序就
可以在当前窗口中显示该元文件包含的图形绘制命令的结果。
再次运行 Graphic程序,利用【文件飞打开】菜单命令即可打开先前保存的元文件,这时,在程序
窗口中可以看到先前绘制的图形(本例是一条直线)。这里再次强调,元文件保存的并不是图形数据,
而是图形绘制命令。


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -