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

易于使用的屏幕捕获到打印机类

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.14/5 (28投票s)

2003年5月14日

CPOL

3分钟阅读

viewsIcon

176978

downloadIcon

3967

一个用于轻松捕获屏幕并打印到默认打印机的类

引言

在我正在进行的一个项目中,我需要一种可以轻松创建前台对话框的屏幕截图并将图像直接打印到默认打印机的方法。 由于我找不到现成的合适的解决方案,因此我编写了一个基于 Code Project 上找到的许多文章的快速而简陋的类。

附加的代码构建了一个非常易于使用的屏幕捕获功能,例如,可以在按钮回调中调用该功能。 可以调整捕获区域和打印方向。 将捕获并打印所需的区域。

Using the Code

正如所说,目标之一是使该类尽可能易于使用。

  1. 将文件 PrntScreen.cppPrntScreen.h 添加到您的项目。
  2. 在您的应用程序(或对话框类等)中,添加以下行
    #include "PrntScreen.h"
  3. 在要捕获和打印屏幕的位置,将以下行添加到您的代码

    示例 1

    CPrntScreen * ScrCap;
    ScrCap = new CPrntScreen();  //create instance
    ScrCap->DoPrntScreen();  //execute capture function
    delete ScrCap;  //remove instance
    ScrCap=NULL;

    示例 2

    CPrntScreen * ScrCap;
    ScrCap = new CPrntScreen("Some error occurred!!!","Message");
    ScrCap->DoPrntScreen(1,1,true);
    delete ScrCap;
    ScrCap=NULL;

示例 1 仅使用默认参数,而示例 2 使用可用选项。

描述

构造函数

该类的构造函数定义为 CPrntScreen(char* sErrTxt, char* sCaption),因此接受两个参数。 这个想法是允许自定义错误消息框以满足您自己的需求/语言。

参数说明

  • char* sErrTxt = 指向所需错误消息的字符的指针
  • char* sCaption = 指向所需消息框标题的字符的指针
    如果省略参数,则在发生错误时将显示默认文本/标题。

函数

该类仅包含一个函数,DoPrntScreen(int nArea, int nOrientation, bool bDialog)
参数说明

  • nArea 确定要捕获的屏幕区域,其中
    • 0 = 整个屏幕
    • 1 = 前台窗口
    • 2 = 前台窗口 - 客户区
      如果省略参数,则默认使用 0(整个屏幕)
  • nOrientation 确定打印方向,其中
    • 1 = Portrait(您也可以使用 DMORIENT_PORTRAIT
    • 2 = Landscape(您也可以使用 DMORIENT_LANDSCAPE
      只有当 bDialog=false 时才使用此参数
      如果省略参数,则默认使用 2(纵向)
  • bDialog 控制是否显示打印机对话框
    • false = 使用默认打印机而不显示对话框
    • true = 显示打印机对话框
      如果省略参数,false(默认打印机)将默认使用

历史

  • 版本 1.0:第一个版本
  • 版本 1.1:更新版本
    以下更改已完成
    • 定义默认参数,以便更易于使用(请参阅上面的示例 1)
    • 引入了一个标志,用于启用打印机对话框的使用
    • 更改了拉伸功能。 现在,捕获的区域将根据其与整个屏幕的关系拉伸到打印机页面。 捕获较小的对话框将不再导致大量打印输出。 :) 完成此操作后,绝对最好将打印方向设置为横向!
    • 以上更改与旧版本兼容,因此使用新版本时无需更改代码。 只需放入新代码即可。 仅打印输出可能会由于拉伸的更改而改变比例。 :(
  • 版本 1.1A:错误修复,修复了在某些打印机上导致空白页的错误
  • 版本 1.2:错误修复(希望如此)和新功能。 这个新版本包括
    • Dieter Hammer 建议的代码,该代码应消除令人讨厌的空白页问题
    • 正确打印部分推出桌面区域的对话框
    • 与纸张方向无关的比例正确的打印输出
    • 检查打印机是否实际能够打印图像
    • 并且 我已经添加了一个演示项目。 prj 文件用于 VC7,对不起, 我不再有 VC6。 只需查看“PrintDlg.cpp”中的最后一个回调处理程序
© . All rights reserved.