设备描述表

1.获取设备描述表句柄:
a. hdc = BeginPaint(hwnd,&ps);
   //other program lines
   EndPaint(hwnd,&ps);
   BeginPaint调用使整个客户区有效(阻止WM_PAINT消息一直发送),填充
   ps结构的字段,返回的设备描述句柄。使用这个句柄只能在ps结构中的rcPaint字段规定的区域
   内绘图。EndPaint调用可释放设备描述句柄。这两个函数常成对出现,并且一般只用在WM_PAINT
   消息中。
b. hdc = GetDC(hwnd);
   //other progream lines
   ReleaseDC(hwnd,hdc);
   GetDC函数调用后会返回hwnd参数所指定的窗口的客户区所对应的设备描述表句柄。可见GetDC调用
   与BeginPaint的基本区别是,利用从GetDC返回的句柄可以在整个客户区上绘图。如果hwnd参数设置
   为NULL,那么函数会返回整个桌面的设备描述表句柄。当不再需要该设备环境时,需要调用ReleaseDC
   函数释放设备描述表。
c. hdc = GetWindowDC(hwnd);
   //other progream lines
   DeleteDC(hdc);
   GetWindowDC返回可以在整个窗口(包括客户区部分和标题栏、菜单、滚动条、框架等非客户区部分)
   绘图的设备描述表句柄,不过此函数很少使用。
d. hdc = CreateDC(lpszDriver,lpszDevice,lpszOutput,lpData);
   //other progream lines
   DeleteDC(hdc);
   BeginPaint、GetDC和GetWindowDC获得的设备内容都与显示器上的某个特定窗口(即hwnd)相关。
   CreateDC是取得设备描述表句柄一个更通用的函数,它甚至可以获取非显示器输出设备描述表句柄。
   当不再需要该设备描述表时只可调用DeleteDC函数删除它。

2.保存设备描述表:

int idSaved = SaveDC(hdc) ;//保存

RestoreDC (hdc, idSaved) ;//恢复

RestoreDC(hdc,-1);//表示恢复最近保存的一次

时间: 2024-11-06 09:58:53

设备描述表的相关文章

对设备描述表中路径层的简单操作

设备描述表中还有一个路径层.路径层就是在客户区上划定界线,界线之内的是各自的地盘.在MFC中,利用CDC类的BeginPath在设备描述表中打开一个路径层,然后利用图形设备借口(GDI)提供的绘图函数进行绘图操作,绘制完成后使用EndPath关闭这个路径层. 裁剪区域:可以把它理解为一个绘图区域,大小可以由我们来控制.对单文档应用程序来说,通常把客户区看做一个大的裁剪区域,但裁剪区域也可以局限于客户区中一个很小的范围之内. CDC类提供一个SelectClipPath函数,其作用是把当前设置的路

Windows应用程序

  Windows应用程序是由一系列的消息处理 代码来实现的.这和传统的过程式编程方法很不一样,编程者只能够 预测用户所利用应用程序用户界面对象所进行的操作以及为这些操作 编写处理代码,却不可以这些操作在什么时候发生或者是以什么顺序 来发生,也就是说,我们不可能知道什么消息会在什么时候以什么顺 序来临. Windows应用程序基本流程:   Windows API:(windowsAppliacation Programming Interface. Windows 应用程序编程接口), API

OpenGL学习系列第二篇

在这个教程里,我们一起来玩第一个OpenGL程序.它将显示一个空的OpenGL窗口,可以在窗口和全屏模式下切换,按ESC退出.它是我们以后应用程序的框架. 在CodeBlock里创建一个新的GLUT Win32程序(不是console控制台程序)后,我们还需要链接OpenGL库文件. 代码的前4行包括了我们使用的每个库文件的头文件.如下所示: #include <windows.h>// Windows的头文件 #include <glew.h>       // 包含最新的gl.

VC++6.0中OpenGL应用程序开发

1. Win32控制台方式 建立Win32 控制台程序,在头文件中加入 #include <windows.h>  #include <wingdi.h>  #include <GL/gl.h>  #include <GL/glu.h >   #include <GL/glaux.h> 2. MFC方式 (1)采用VC AppWizard向导创建空的MFC(EXE)工程框架,整个过程总共6步,值得指出的是一般情况下在向导的第1步选择创建工程的模式

Windows DIB文件操作详解-4.使用DIB Section

前面讲了为了提高DIB的显示性能和效率,我们将DIB转换成DDB,但是这又遇到一个问题,如果我想操作DIB的数据的话,显然是不能使用DDB:一是因为DIB转DDB时发生了颜色转换,再就是DDB无法直接提取指定像素点的数据.那么我们怎么办呢,Windows使用一种折中的方式来达到这一目标(既提高了显示效率和性能,又可以直接操作像素点). 1.DIB Section存储和显示 Windows使用DIB块(DIB Section)来存储DIB数据,其内存结构示意图如下 其实,和我们自己读入DIB数据到

MFC-插入符的创建

22:12:25本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6218597.html 1.插入符(Caret)的创建与显示 插入符用于标定输入信息位置的闪烁竖线,MFC中创建插入符可以直接使用CWnd类的CreateSolidCaret()函数来完成,其函数原型为void CreateSolidCaret(int nWidth,int nHeight),两个参数分别表示插入符的宽度和高度. 新建一个工程,添加WM_CREATE消

GDI基础

1.GDI 图像设备接口,windows程序显示点,线,图像,文字时,在显示器或打印机输出这些内容时,需要使用GDI2.when--在WM_PAINT时  where--设备描述表  how--调用GDI函数:  case WM_PAINT:  HDC hdc; //设备描述变量  PAINTSTRUCT ps; //绘图信息结构变量  hdc = BeginPaint(hwnd, &ps); //赋值给hdc  GetClientRect(hwnd, &rect);   //TextOu

vc实现透明位图,透明背景

vc实现透明位图,透明背景 我们在进行程序的界面设计时,常常希望将位图的关键部分,也既是图像的前景显示在界面上,而将位图的背景隐藏起来,将位图与界面很自然的融合在一起,本文介绍了透明位图的制作知识,并将透明位图在一个对话框中显示了出来. 一.实现方法 绘制"透明"位图是指绘制某一位图中除指定颜色外的其余部分,我们称这种颜色为"透明色".通过将位图的背景色指定为"透明色",在绘制时,不绘制这部分背景,而仅绘制图像,这样就可以将位图中图像透明地绘制到

Delphi颜色的表示(一共5种表示法)

//全以红色举例: //1. RGB 模式:Self.Color := $0000ff; //不过和HTML.PhotoShop.FireWorks中的 #ff0000 是完全反的,应该叫 BGR. //2. RGB 分值,譬如:Self.Color := RGB(255,0,0); //3. Delphi 中的标准模式:Self.Color := $000000ff;//其中低3位字节代表RGB(BGR)相应的颜色://如果最高位字节是$00,则表示用系统调色板中最相近的颜色://最高位字节是