Visual C++ 打印编程技术-内存设备环境
1.内存设备环境
内存设备环境是一个没有设备与它联系的环境。一般利用与某个标准设备环境兼容的内存设备环境把一个位图复制到屏幕上去。为此可以先创建一个与某个标准设备环境兼容的内存设备环境,然后把所要显示的位图复制到内存设备环境中,最后再从内存设备环境复制到真实的设备环境,从而把位图显示出来。
eg:
void CMainFrame::OnBitmapDraw()
{
CDC* pCDC=GetDC(); //获取当前设备上下文
CBitmap bitmap; //定义CBitmap对象
bitmap.LoadBitmap(IDB_BITMAP_1); // 加载指定ID位图对象
CDC memDC; //定义内存上下文信息,此处没通过new创建,会自动释放,不需要显示调用ReleaseDC
memDC.CreateCompatibleDC(pCDC); //创建与指定设备兼容的内存上下文
//此处是窗体
memDC.SelectObject(&bitmap); //选择对象到内存环境上下文
BITMAP bmInfo;//BITMAP structure
//The BITMAP structure defines the type, width, height, color format, and bit values of a bitmap.
bitmap.GetObject(sizeof(bmInfo),&bmInfo); //检索bitmap图像信息,赋给bmInfo (获取图像高宽信息)
pCDC->BitBlt(100,0,bmInfo.bmWidth,bmInfo.bmHeight,&memDC,0,0,SRCCOPY);//将内存环境山下文复制到设备上下文
ReleaseDC(pCDC);
}
2.打印机设备环境
要为打印机创建一个设备环境,必须先创建一个CDC类对象,调用它的CreateDC()成员函数
CDC dc;
dc.CreateDC(
LPCTSTR lpszDriver, //打印机所用的设备驱动程序
_In_ LPCTSTR lpszDevice, //进行的打印的打印设备名称
//This parameter is ignored and should be set to NULL. It is provided only for compatibility with 16-bit Windows.
LPCTSTR lpszOutput, //指定设备的串口名
//If lpszDriver is DISPLAY, lpInitData must be NULL; GDI then uses the display device's current DEVMODE.
_In_ const DEVMODE *lpInitData //设备专用初始化数据
);
Visual C++ 打印编程技术-内存设备环境的更多相关文章
- Visual C++ 打印编程技术-编程基础-映射模式
映射模式: Visual C++ 中采用的坐标映射方式使得用户图形坐标和输出设别的像素完全一致. eg:当屏幕的像素大小为800X600时,每英寸包含屏幕像素为96,打印机则需要几倍的点数才能达到同样 ...
- Visual C++ 打印编程技术-编程基础
背景: windows产生前,操作系统(如DOS等)都不提供支持图像处理的打印机驱动程序,使得程序员为打印出图像,不得不针对使用的打印机 自己编写设备驱动程序,导致了大量的.不必要的重复开发. 随着w ...
- Visual C++ 打印编程技术-打印基础知识
打印机介绍 1.打印术语 *: 1 英寸= 2.54 厘米(cm)= 25.4 毫米(mm) cpi (Characters Per Inch): 每英寸内所含的字符数,用来表示字符的大小.间距 cp ...
- Visual C++ 打印编程技术-编程基础-获取打印机
标准方法是用: EnumPrinters() 函数获取 #define PRINTER_ENUM_DEFAULT 0x00000001 #define PRINTER_ENUM_LOCAL 0x000 ...
- VB中的GDI编程-1 设备环境DC
p{ font-size: 15px; } .alexrootdiv>div{ background: #eeeeee; border: 1px solid #aaa; width: 99%; ...
- 转载--提高C++性能的编程技术
读书笔记:提高C++性能的编程技术 第1章 跟踪范例 1.1 关注点 本章引入的实际问题为:定义一个简单的Trace类,将当前函数名输出到日志文件中.Trace对象会带来一定的开销,因此在默认情况 ...
- 第一篇:GPU 编程技术的发展历程及现状
前言 本文通过介绍 GPU 编程技术的发展历程,让大家初步地了解 GPU 编程,走进 GPU 编程的世界. 冯诺依曼计算机架构的瓶颈 曾经,几乎所有的处理器都是以冯诺依曼计算机架构为基础的.该系统架构 ...
- C++ Builder多线程编程技术经验谈(转)
源:C++ Builder多线程编程技术经验谈 线程之可行性 在很多情况下,可能需要为程序创建线程.这里给出其中一些可能性: (1)如果创建的是一个多文档接口(Multiple Document ...
- .NET 线程池编程技术
摘要 深度探索 Microsoft .NET提供的线程池, 揭示什么情况下你需要用线程池以及 .NET框架下的线程池是如何实现的,并告诉你如何去使用线程池. 内容 介绍 .NET中的线程池 线程池中执 ...
随机推荐
- [codevs1557]热浪
本题地址:http://www.luogu.org/problem/show?pid=1339 http://codevs.cn/problem/1557/ http://www.tyvj.cn/p/ ...
- 成功安装mysql(mysql-5.5.32-winx64.msi)后,为何服务管理器里找不到MYSQL服务名?
解决方案: 1.打开cmd,切换到mysql的bin目录下 2. D:\Program Files\MySQL5.1\bin>mysqld.exe -install 成功后会出现:Service ...
- storm出现的背景
storm出现的背景 互联网从诞生的第一时间起,对世界的最大改变就是让信息能够实时交互,从而大大加速了各个环节的效率.正因为大家有对信息实时响应.实时交互的需求,所以软件行业除了个人操作系统之外,数 ...
- ARM MIPS PowerPC比较
ARM, MIPS, Power PC的比较 “ARM面向的低端消费类市场,拼的是功耗:PowerPC面向的是中高端市场,比的是性能,好像还没看到谁的手机是PowerPC的,也没有看到谁家企业级以 ...
- jetbrains
于最新jetbrains发布了IntelliJ IDEA 15. PyCharm 5.PhpStorm10.WebStorm 11等各个版本,但是改变了注册方法.原先的注册码包括注册机都已经不能使用了 ...
- 微信.NET 微信开发 自己主动内容回复 ASP.NET C#代码
微信开发中,首先遇到的问题就是处理怎样接收和响应用户消息 , 本文将向大家介绍一下方法和关键的代码. 本文使用的接口库是 :https://github.com/chendong152/Weixin ...
- Dom4j写XML
package com; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.I ...
- android90 bind方式启动服务service调用service里的方法
package com.itheima.banzheng; import com.itheima.banzheng.LeaderService.ZhouMi; import android.os.Bu ...
- careercup-递归和动态规划 9.10
9.10 给你一堆n个箱子,箱子宽w,高h,深d.箱子不能翻转,将箱子堆起来时,下面箱子的宽度.高度和深度必须大于上面的箱子.实现一个方法,搭出最高的一堆箱子,箱堆的高度为每个箱子高度的总和. 解法: ...
- careercup-树与图 4.5
4.5 实现一个函数,检查一棵二叉树是否为二叉查找树. 参考:http://blog.csdn.net/sgbfblog/article/details/7771096 C++实现代码: #inclu ...