releaseDC和deleteDC的区别

阐述了在Windows系统中DC设备上下文的GetDC、ReleaseDC、CreateDC与DeleteDC之间的对应关系与区别,强调了正确管理DC的重要性,包括及时释放资源、避免多重上下文使用及递归函数中的调用注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         DeleteDC 与 CreateDC 对应使用,ReleaseDC 与 GetDC 对应使用。所以:DeleteDC 与ReleaseDC的区别 实际就是 CreateDC和GetDC的区别。

         windows系统DC只能GetDC, 但我们可以 自己建DC。借过来的(GetDC )要还回去(RealeaseDC),自己创建的(CreateDC )要自己删除它(DeleteDC )。GetDC 和 GetClientDC 是从系统预留的若干个 DC 当中获得一个目前尚未使用的设备环境。所以,应该注意如下两点:  

       1. 在使用完成一个由 GetDC 返回的设备环境之后,应该尽快调用 ReleaseDC 释放。

       2.避免同时使用多个设备上下文,并避免在递归函数中调用 GetDC 和 GetClientDC。

例子:

CPaintDC dc(this);

 CDC MemDC;

   CBitmap bitmap;

   BITMAP m_bitmap;


bitmap.LoadBitmap(IDB_MAIN);

bitmap.GetBitmap(&m_bitmap);

MemDC.CreateCompatibleDC(&dc);

MemDC.SelectObject(&bitmap);


dc.BitBlt(0,0,m_bitmap.bmWidth,m_bitmap.bmHeight,&MemDC,0,0,SRCCOPY);

bitmap.DeleteObject();

MemDC.DeleteDC();

上面这段代码是显示一副位图,CPaintDC是通过调用构造函数得到的,CPaintDC dc(this);它里面其实也就调用了GetDC方法,所以最后的析构函数也调用了ReleaseDC。MemDC是我们自己创建的兼容DCMemDC.CreateCompatibleDC(&dc);,所以用完后需要我们自己删除,MemDC.DeleteDC();。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值