Doc/View 架构中的高级预览






4.67/5 (3投票s)
2000年10月13日

128193

2582
一个简单的类,有助于在 MFC Doc/View 应用程序中提供更快的打印预览
对于 MFC 程序员来说,加快其文档/视图应用程序中的打印预览显示通常非常重要。
我想介绍我在最近开发一个大型系统时,对打印预览过程进行的一些改进。我扩展了 MFC 预览过程,使用 BitBlt
函数创建无闪烁的系统。
您可以在下面看到 ExtPreviewView
类定义的概要。该类继承自 MFC 技术说明 30 中描述的 MFC 的 CPreviewView
。三个受保护的成员保存虚拟视口数据。通过初始化 MFC 预览过程,InitVxPrintOffset()
函数执行一次,并设置上述成员的值。因此,您可以使用与 MFC 预览 DC 兼容的内存 DC 上创建位图,以便进行高速绘制,使用虚拟纸张的最大尺寸。
// override MFC class class ExtPreviewView : public CPreviewView { ... protected: // Original viewport point of memory DC CSize m_VxPrintOffset; CSize m_sizeVxVpExt, m_sizeVxWinExt; public: void InitVxPrintOffset(CDC* pDC); ... friend class CAdvancedPreviewView; };
其次,我向 MFC 添加了一些更多的缩放标签,如下所示。
#define ZOOM_IN_150 3 #define ZOOM_IN_200 4 #define ZOOM_IN_400 5
我添加了一些代码,例如 SetScaleSize() 函数等。
注意
您需要在工作区中为 "gafximpl.h" 设置一个特殊的路径。该路径必须与 MFC 类库的源路径相同。
操作方法如下:
- 在“项目”菜单上,单击“设置”。
- 在“设置”对话框中,选择“C/C++”选项卡。
- 从“类别”下拉列表中选择“预处理器”。
- 项目特定的包含路径位于“附加包含目录”编辑框中。
谢谢。
吉村康彦 (Yasuhiko Yoshimura)
2000年9月5日