1、准备知识

函数名 覆盖函数可能完成的任务
CView::OnPreparePrinting() 调用CprintInfo成员函数(如CprintInfo::SetMaxPage设置文档长度)或设置CprintInfo数据成员以影响Print对话框或打印预览操作,然后调用DoPreparePrinting生成用于打印或打印预览的设备描述表(注意必须覆盖OnPreparePrinting并调用DoPreparePrinting)
CView::OnBeginPrinting() 分配专门用于打印的字体,画笔、画刷和其它对象,根据设备描述表计算并设置文档长,在设备描述表上存放所需的消息(这是第一个访问设备描述表的的虚拟函数)
CView::OnPrepareDC() 设置打印当前页面的文本或图形属性,修改视图原点,以打印当前页面,如果没有设置文档长度,在文档末尾终止打印循环(CprintInfo::m_bContinuePrinting赋值FALSE)
CView::OnPrint() 调用OnDraw进行输出;调用OnDraw前选择OnBeginPrinting分配的字体,调用OnDraw后取消对象,打印只出现在文档打印版中的页头和页脚,如果打印输出与屏幕输出的外观不同, 在这里打印,而不是调用OnDraw
CView::OnEndPrinting() 调用Cgdi::DeleteObject删除OnBeginPrinting分配的对象

VS2017 MFC对话框程序打印及打印预览的实现_微澜111的博客-CSDN博客_mfc打印预览MFC文档/视图的应用程序,向导给了打印及打印预览的标准支持。使这类应用程序打印及打印预览工作得以简化。另一类对话框程序却没有相应支持,从MFC打印及打印预览的标准支持入手,可以在对话框程序中,增加三个类以支持打印及打印预览,本文介绍了这三个类的实现。 打印及打印预览是编写应用程序经常要解决的问题,为了理解VC++对话框程序的打印及打印预览实现,要先掌握基于文档/视图的应用程序打印及打印预览的基本原理。所以分为两部分介绍。https://blog.csdn.net/weixin_42403113/article/details/88873492

2、打印和显示屏幕不一样的地方

每英寸点数不同,所以往打印DC,和往屏幕DC里绘制时,需要做一些转换

void CxxView::OnPrint(CDC *pDC, CPrintInfo *pInfo)
{
    // Print zoom is the difference between screen- 
    // and printer resolution.
    CClientDC dc( this );
    int n  = dc.GetDeviceCaps( LOGPIXELSX );
    int n1 = pDC->GetDeviceCaps( LOGPIXELSX );

}

MFC 对话框打印和打印预览知识总结相关推荐

  1. Lodop中特殊符号¥打印设计和预览不同

    Lodop中¥符号样式改变问题 Lodop中对超文本样式的解析,虽然说是按照调用的本机ie引擎,但是调用的ie版本可能不同,导致在ie下是一种样式,预览又是另一种样式.可能是有些样式没有具体设置,走的 ...

  2. 用友T6软件设置打印模板后预览没有变化-用友T6

    设置打印模板后预览没有变化 原因分析:操作员在进行打印预览时如果在预览界面选择"保存当前设置",此时会在C盘下生成一个XML格式的文件,无论如何修改单据打印模板,预览调取的都是保存 ...

  3. 自定义模板、自定义打印机、自动打印:grid++ report自动打印、clodop预览和自动打印(electron+vue)

    一.grid++ report选择模板预览和自动打印 这里主要是前后端配合,数据前端传入,打印后端配置. IGridppReport 成员: 封装立即打印,数据格式为: {"reportDa ...

  4. 水晶报表制作6*4cm的打印纸标签,预览时数据是一页,打印出来却多了一页空白?

    欢迎来到一块钱的博客!!! 问题描述:水晶报表 预览时数据是一页,打印出来却多了一页空白.如图: 问题情况分析: 尝试1: 用水晶报表工具Crystal Reports2010设置一个(宽)6X4cm ...

  5. C#调用CodeSoft Label档打印Label及预览Demo

    一.布局如下 二.后端代码实现如下 public string str = "887451254";public string filePath=null;string labFi ...

  6. ie浏览器html打印预览,Javascript实现IE打印页面设置、预览、首页设置的代码

    1.js代码方式 复制代码 代码示例: IE打印页面设置-www.jquerycn.cn .noprint{ display:none; } function printsetup(){ // 打印页 ...

  7. PB设置打印比例和预览比例

    string ls_zoom ls_zoom = 50 //50%的比例 //预览比例 dw_1.modify("datawindow.print.preview.zoom=" + ...

  8. IE调用WebBrowser控件实现WEB打印、分页打印、无预览打印

    WebBrowser控件 WebBrowser ActiveX 控件提供托管的包装. 托管的包装便可以在 Windows 窗体客户端应用程序中显示网页. 你可以使用WebBrowser控件重复中你的应 ...

  9. Java 打印功能带预览,自定义纸张大小

    效果图 package print; import java.awt.*; import java.awt.print.*; import javax.print.PrintService; impo ...

最新文章

  1. 求合体电脑版_SCP CB 电脑移植版测评
  2. 样条表示---OpenGL的逼近样条函数
  3. LRU(Least Recently Used)算法的理解
  4. 21、深入浅出MFC学习笔记,Application Framework简介
  5. VS配合VSS时,编译报错:未能向文件“....csproj.FileListAbsolute.txt”写入命令行,对路径的访问被拒绝。...
  6. linux hosts文件如何修改_3 种方法教你在 Linux 中修改打开文件数量限制
  7. 解读阿里官方代码规范
  8. 5 -- Hibernate的基本用法 --5 3 改变持久对象状态的方法
  9. C语言的图形函数库贴吧,自己写的一个图形库,有点问题.来请教大家了
  10. Netty的并发编程实践5:不要依赖线程优先级
  11. 2022-2028全球STEAM教育行业调研及趋势分析报告
  12. 企业网络信息安全意识宣贯——屏保制作
  13. UML实例(一):在线购物系统问题描述
  14. 链家40岁员工删除公司9T数据,被判7年
  15. Python3 将本地时间转换成指定时区时间
  16. 腾讯与阿里巴巴投资可编程芯片公司Barefoot Networks
  17. 三星80亿美元收购Harmon真正意图是它?
  18. 力扣1226.哲学家进餐
  19. MYSQL 中连接的使用
  20. 硕士卖房,到底是行业内卷,还是自我突破

热门文章

  1. STM32使用Jlink下载出现NO cortex-M SW device Found解决(超详细)
  2. iperf安装与使用
  3. bbedit php,BBEdit for Mac(最好用的HTML文本编辑器)
  4. 非理工科编程零基础文科生秒懂python学习笔记:pandas库数据表格创建和运算基础有哪些?
  5. 架构师教你:如何实现两个完全独立闭环业务系统的融合。
  6. 如何改变图片的大小kb
  7. 什么是数字化存在?数字化转型要先从数字化存在开始
  8. PLC模拟量采集在工业自动化控制中的应用
  9. 央行数字货币研究所与农信银资金清算中心合作推进数字人民币应用
  10. 一个二维码通吃 android , ios 下载