关于CClientDC与CPAINTDC,以及GetDC与GetWindowDC的用法。

news/2024/7/8 6:09:24 标签: 图形, 活动

CClientDC(客户区设备上下文)用于客户区的输出,它在构造函数中封装了GetDC(),在析构函数中封装了ReleaseDC()函数。一般在响应非窗口重画消息(如键盘输入时绘制文本、鼠标绘图)绘图时要用到它。用法是:
CClientDC   dc(this);//this一般指向本窗口或当前活动视图  
dc.TextOut(10,10,str,str.GetLength());      
//利用dc输出文本,如果是在CScrollView中使用,还要注意调      
//用OnPrepareDC(&dc)调整设备上下文的坐标。      
CPaintDC用于响应窗口重绘消息(WM_PAINT)是的绘图输出。CPaintDC在构造函数中调用BeginPaint()取得设备上下文,在 析构函数中调用EndPaint()释放设备上下文。EndPaint()除了释放设备上下文外,还负责从消息队列中清除WM_PAINT消息。因此,在 处理窗口重画时,必须使用CPaintDC,否则WM_PAINT消息无法从消息队列中清除,将引起不断的窗口重画。CPaintDC也只能用在 WM_PAINT消息处理之中。


GetDc函数:用于获得hWnd参数所指定窗口的客户区域的一个设备环境。
所获得的设备环境可以是通用、类或者私有类型,具体由指定窗 口的类风格决定。对于通用设备环境,GetDc函数每次获取一个设备环境时都会用默认属性对它进行初始化。该函数获得的类和私有设备环境会与它们最后一次 的设置保持一致。当设备环境不再需要时,应该调用ReleaseDC函数将其释放。  
   
GetWindowDC函数:返回hWnd参数所指定的窗口的设备环境。
获 得的设备环境覆盖了整个窗口(包括非客户区),例如标题栏、菜单、滚动条,以及边框。这使得程序能够在非客户区域实现自定义图形,例如自定义标题或者边 框。当不再需要该设备环境时,需要调用ReleaseDC函数释放设备环境。注意,该函数只获得通用设备环境,该设备环境的任何属性改变都不会反映到窗口 的私有或者类设备环境中(如果窗口有的话)

 


http://www.niftyadmin.cn/n/1403844.html

相关文章

大数据分析与挖掘第五章考试重点 思维导图

点击打开大数据分析与挖掘第5章 提取码: p6qr

WinCE文件目录定制及内存调整

这个说起来比较简单,WinCE的文件目录结构以及文件的位置都是在DAT文件中定义的。所有的dat文件会在WinCE编译时合并成initobj.dat文件,WinCE会根据DAT中的描述生成相应目录。 关于DAT的格式,可以参考我以前的一片文章:”WinCE BS…

C++强大的背后意味着什么?

在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bjarne Stroustrup,该门语言则命名为——C with classes,四年后改称为C。C是一门通用编程语言,支持多…

NoSQL 第一章绪论

点击打开 预览 提取码: TySR

完整ASCII字符表

ASCII(美国信息交换标准编码)表字符ASCII代码字符ASCII代码字符ASCII代码二进制十进制十六进制 二进制十进制十六进制 二进制十进制十六进制 回车ESC空格!"#$0001101001101101000000100001010001001000110100100132732333435360D1B20212…

wince bootloader 修改 wince时间问题

ARM 系统使用wince需要判断RTC时间的准确性否则系统在启动以后会出现奇怪的现象如:系统时间为2479年等会引起系统USB连接同步故障等因此在 bootloader 中需要先判断RTC时间: YearrBCDYEAR;if((Year&0XF)>9||((Year & 0XF0)>>4)>9||…

大数据环境安装踩到的坑

一、环境变量错误导致电脑无法进入图形化界面,只能使用命令行ctrlaltf6,并且几乎所有命令无法使用 该中情况可以解决(ubuntu),因为少数的命令是可以使用的,vi虽然和source虽然并不能直接使用,但…