hdc cdc
CWindowDC dc(this);
HDC hdc=dc.GetSafeHdc();
using namespace Gdiplus;
Graphics graphics(hdc);
graphics.SetSmoothingMode(SmoothingModeHighQuality);
Pen newPen(Color(0,200,255),5);
graphics.DrawLine(&newPen, 50, N1, x2, y2);
ps:析构函数中什么也没有。
RE:
GetDC/GetSafeHdc需要调用ReleaseDC来释放: ::ReleaseDC(m_hWnd,hdc);
gdi+的资源new要对应delete(gdi的资源createxxx对应DeleteObject)
Pen = new Pen(Color(0,200,255),5);
delete Pen;
Pen = NULL;
-----------------------------------------------
CDC *pDC = GetDlgItem(IDC_WAVEFORM)->GetDC();
HDC hdc = pDC->GetSafeHdc(); if(!ReleaseDC(pDC) )//成功
{
printf("1 error code:%d\n",GetLastError());
} if(!DeleteObject(hdc))
{
printf("2 error code:%d\n",GetLastError());//失败 返回:6
}
请问在这里 pDC和hdc 都需要释放吗?还是只释放pDC,应该怎么去理解?
RE:
ReleaseDC(pDC)就行了,在Release(pDC)的过程中,会DeleteObject掉和pDC相关联的HDC的。
http://bbs.csdn.net/topics/390921040
http://bbs.csdn.net/topics/340265147
hdc cdc的更多相关文章
- CDC和HDC的区别与转换
CDC和HDC的区别与转换 一.区别与联系HDC是句柄:CDC是MFC封装的Windows 设备相关的一个类:CClientDC是CDC的衍生类,产生对应于Windows客户区的对象HDC是WIN ...
- VC++ 中CDC与HDC的区别以及二者之间的转换
MFC类的前缀都是C开头的 H开头的大多数是句柄 这是为了助记,是编程读\写代码的好的习惯. CDC中所有MFC的DC的基类.常用的CClientDC dc(this);就是CDC的子类(或称派 ...
- VC中CDC与HDC的区别以及二者之间的转换
CDC是MFC的DC的一个类 HDC是DC的句柄,API中的一个类似指针的数据类型. MFC类的前缀都是C开头的 H开头的大多数是句柄 这是为了助记,是编程读\写代码的好的习惯. CDC中所有MFC的 ...
- 【转】HDC,CDC,CWindowDC,CClientDC,CPaintDC等等
转载出处:http://blog.sina.com.cn/s/blog_447611f20100lirt.html 首先说一下什么是DC(设备描述表) Windows应用程序通过为指定设备(屏幕,打 ...
- VC/MFC的HDC,CDC,CWindowDC,CClientDC,CPaintDC详解:
VC/MFC的HDC,CDC,CWindowDC,CClientDC,CPaintDC详解: 首先说一下什么是DC(设备描述表) 解:Windows应用程序通过为指定设备(屏幕,打印机等)创建一个设备 ...
- HDC与CDC相互转换
转自loop_k原文 HDC与CDC相互转换 概念 首先说一下什么是DC(设备描述表):Windows应用程序通过为指定设备(屏幕,打印机等)创建一个设备描述表(Device Context, DC) ...
- CDC与HDC的区别以及相互转换
CDC是MFC的DC的一个类 HDC是DC的句柄,API中的一个类似指针的数据类型. MFC类的前缀都是C开头的 H开头的大多数是句柄 这是为了助记,是编程读\写代码的好的习惯. CDC中所 ...
- DC、CDC及CDC的各个子类
设备描述表是一个包含设备信息的结构体(物理设备如显示器.打印机),MFC中关于图像操作都需要DC来完成.HDC是Windows的一种数据类型,是设备描述句柄:CDC是MFC封装的Windows 设 ...
- Camel、Pastal、匈牙利标记法
原来我一直用的是Camel标记法……收藏学习了. */ Camel标记法采用首字母小写,接下来的单词都以大写字母开头的方法,如myName. Pastal标记法采用首字母大写, ...
随机推荐
- 《大话》之第三者家族 代理 Vs 中介者
前两天,有个同学突然问我说:"我感觉代理模式和中介者模式不好区分,你能给我讲讲吗?" 刚开始还没敢张嘴,因为他突然一问,我貌似也不知道,经过整理,现在将结果贴出来,请大家共享 代理 ...
- 如何清除sql server日志
1.打开查询分析器,输入命令 DUMP TRANSACTION 数据库名 WITH NO_LOG 2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件-- ...
- ContentProvider往通讯录添加联系人和获取联系人
public class MainActivity extends Activity { private People people; private List<People> pList ...
- Linux常用命令_(磁盘管理)
磁盘信息:df.du df命令–功能:检查文件系统的磁盘空间占用情况–语法:df [选项]–选项:-a 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统.-k 以 ...
- Linux常用命令_(网络管理)
网络信息:hostname.netstat.route.ifconfig网络配置:netconfig网络测试:ping hostname–查看主机名称ifconfig–查看和设置网络配置–ifconf ...
- HeapByteBuffer和DirectByteBuffer以及回收DirectByteBuffer
由于HeapByteBuffer和DirectByteBuffer类都是default类型的,所以你无法字节访问到,你只能通过ByteBuffer间接访问到它,因为JVM不想让你访问到它. 分配Hea ...
- Beaglebone Black的启动
Beaglebone Black的启动 第1章 准备开始 Beaglebone Black上最显眼的恐怕就是板子两侧的扩展端口,一侧有46个端口,共92个端口Beaglebone Black的启动. ...
- 位运算 2013年山东省赛 F Alice and Bob
题目传送门 /* 题意: 求(a0*x^(2^0)+1) * (a1 * x^(2^1)+1)*.......*(an-1 * x^(2^(n-1))+1) 式子中,x的p次方的系数 二进制位运算:p ...
- extjs 2.0获取选中的radio的值
var temp=winFormPanel.getForm().findField('selectedType').getGroupValue();
- requirejs模块化框架用法分享
我采用的是一个非常流行的库require.js. 一.为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.后来,代码越来越多,一 ...