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中的线程池 线程池中执 ...
随机推荐
- lua package.path的使用
需要用lua写一个工具,c++调用lua,然后这个lua要require其他lua脚本,在主lua里面设置package.path,但一直都失败,甚至lua都无法编译通过. project_path ...
- 处理Google Play的相关方法
1.打开Google play软件的详细页面 Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.se ...
- localStorage保存账号密码
首先是判断浏览器是否支持这一属性,他是HTML5里的属性: if(window.localStorage){ alert('支持');}else{ alert('不支持');} localStorag ...
- Html笔记(二)字体
字体标签:<font> 例:<font size=5 color=red>字体标签示例</font> 注:简单颜色可以直接写对应的英文,复杂的颜色用16进制表示,表 ...
- node系列1
NodeJS基础 JS是脚本语言,脚本语言都需要一个解析器才能运行,NodeJS就是一个解析器.nodejs.org 打开终端,键入node进入命令交互模式,可以输入一条代码语句后立即执行并显示结果 ...
- Linear Regreesion
3.似然函数:我是这么理解的,比如说我们知道某个X的概率分布密度函数,但是这个概率分布有未知的参数,但是我想得到这个未知的参数θ,然后我们就通过很多个已知的变量,把这些概率分布密度函数乘起来,这 ...
- StartUML破解
破解文件路径如今下: .../StarUML/www/license/node/LicenseManagerDomain.js 使用文本编辑器打开,红色字体为添加内容: function valida ...
- C#Winform窗口特效源码(1)
本文基于.Net开发,使用C#作为开发语言,分别包含以下效果: 移动无边框窗口.窗口移动限制(限制在屏幕内).桌面贴边自动隐藏(仿QQ隐藏窗口) 1.移动无边框窗口 采用了消息的方式,可以实现通过窗口 ...
- 【开发工具 - Git】之Git常用命令汇总
本文记录了Git Bash中的常用指令. 1 Git操作 git clone XXXXX:将GitHub项目XXXXX克隆到本地 git remote –v:查看远程连接信息 git ch ...
- 跟我学SpringMVC目录汇总贴、PDF下载、源码下载
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...