65.9K
CodeProject 正在变化。 阅读更多。
Home

Doc/View 架构中的高级预览

2000年10月13日

viewsIcon

128193

downloadIcon

2582

一个简单的类,有助于在 MFC Doc/View 应用程序中提供更快的打印预览

  • 下载源文件 - 25 Kb
  • 下载演示应用程序 - 14 Kb
  • Sample Image - AdvancedPrev.jpg

    对于 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日

    © . All rights reserved.