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++ 打印编程技术-内存设备环境的更多相关文章

  1. Visual C++ 打印编程技术-编程基础-映射模式

    映射模式: Visual C++ 中采用的坐标映射方式使得用户图形坐标和输出设别的像素完全一致. eg:当屏幕的像素大小为800X600时,每英寸包含屏幕像素为96,打印机则需要几倍的点数才能达到同样 ...

  2. Visual C++ 打印编程技术-编程基础

    背景: windows产生前,操作系统(如DOS等)都不提供支持图像处理的打印机驱动程序,使得程序员为打印出图像,不得不针对使用的打印机 自己编写设备驱动程序,导致了大量的.不必要的重复开发. 随着w ...

  3. Visual C++ 打印编程技术-打印基础知识

    打印机介绍 1.打印术语 *: 1 英寸= 2.54 厘米(cm)= 25.4 毫米(mm) cpi (Characters Per Inch): 每英寸内所含的字符数,用来表示字符的大小.间距 cp ...

  4. Visual C++ 打印编程技术-编程基础-获取打印机

    标准方法是用: EnumPrinters() 函数获取 #define PRINTER_ENUM_DEFAULT 0x00000001 #define PRINTER_ENUM_LOCAL 0x000 ...

  5. VB中的GDI编程-1 设备环境DC

    p{ font-size: 15px; } .alexrootdiv>div{ background: #eeeeee; border: 1px solid #aaa; width: 99%; ...

  6. 转载--提高C++性能的编程技术

    读书笔记:提高C++性能的编程技术   第1章 跟踪范例 1.1 关注点 本章引入的实际问题为:定义一个简单的Trace类,将当前函数名输出到日志文件中.Trace对象会带来一定的开销,因此在默认情况 ...

  7. 第一篇:GPU 编程技术的发展历程及现状

    前言 本文通过介绍 GPU 编程技术的发展历程,让大家初步地了解 GPU 编程,走进 GPU 编程的世界. 冯诺依曼计算机架构的瓶颈 曾经,几乎所有的处理器都是以冯诺依曼计算机架构为基础的.该系统架构 ...

  8. C++ Builder多线程编程技术经验谈(转)

    源:C++ Builder多线程编程技术经验谈 线程之可行性   在很多情况下,可能需要为程序创建线程.这里给出其中一些可能性: (1)如果创建的是一个多文档接口(Multiple Document ...

  9. .NET 线程池编程技术

    摘要 深度探索 Microsoft .NET提供的线程池, 揭示什么情况下你需要用线程池以及 .NET框架下的线程池是如何实现的,并告诉你如何去使用线程池. 内容 介绍 .NET中的线程池 线程池中执 ...

随机推荐

  1. 拉普拉斯特征图降维及其python实现

    这种方法假设样本点在光滑的流形上,这一方法的计算数据的低维表达,局部近邻信息被最优的保存.以这种方式,可以得到一个能反映流形的几何结构的解. 步骤一:构建一个图G=(V,E),其中V={vi,i=1, ...

  2. HDOJ-ACM1017(JAVA)

    问题描述: 简单来说,就是 输入N,然后输入N个数据块,一个数据块包含(n,m),并计算0 < a < b < n 且 (a^2+b^2 +m)/(ab) 为整数.其中a,b只要符合 ...

  3. php&mysql

    更新语句 $query='update num set num='.$counter.'where id=1';      ....................这个查询失败 $query='upd ...

  4. system partition table

    转载内容 摘录部分我的笔记的中doc,和大家一起感受Oracle 11g在分区方面的增强--System Partitioning 系统分区的特点 ●系统分区与其他分区相比,一个最根本的区别就是不需要 ...

  5. ASIHTTPRequest 中url参数中文乱码

    ASIHTTPReques确实是在开发过程中,数据的传输,获取方面给我们很大的帮助.然而在一些方面也是需要一些的注意. 在我们使用ASIHTTPReques 进行get方式获取数据时,如果需要传入中文 ...

  6. [六]JFreeChart实践五之与Struts2整合

    1.Action,返回Chart package com.java1234.chart.bar; import java.awt.Color; import org.jfree.chart.Chart ...

  7. .Net设计模式_开篇

    前言 其实以前看过两次设计模式,现在想来,几乎已经对设计模式没有任何印象,说明根本没有理解.或者说几乎不用,所以我除了单列.工厂外的设计模式几乎全部忘记了.最近需要写一个引擎,想用UML设计整体的架构 ...

  8. DoctorNote医生处方笔记开发记录

    1.开发背景 一个开诊所的中医朋友,希望我能给他开发一个记录病人姓名和处方的Android手机app,以便查询病人每次就诊信息,比如上一次的处方,以前他要找个病人上一次的就诊处方,几乎要翻遍一叠厚厚的 ...

  9. jQuer基础

    一.概述 jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more.如今,jQuery已经成为最流行的javascript库,在世界前10000个访问最多 ...

  10. 生成N个不相等的随机数

    近期项目中须要生成N个不相等的随机数.实现的时候.赶工期,又有项目中N非常小(0-100)直接谢了一个最直观的方法: public static List<Integer> randomS ...