wince 下CDC资源释放问题:DeleteDC

以前XP下编程,一直用的CDC资源释放方式都没有问题,最近在wince平台发现了一个关于CDC资源释放问题。

一般在XP下编程对于CDC资源的释放都是这样做的,GetDC对应用ReleaseDC,CreateDC对应用DeleteDC就OK了,但是在wince下就会出现问题,用CreateDC创建的设备文本,如果仅仅是使用DeleteDC是不够的,这样会导致内存被耗尽。正确的方法是先将你选入DC的资源选出,然后使用DeleteDC。例如:

void CMyDlg::OnPanit()

{

CPaintDC dc(this); // 用于绘制的设备上下文

CRect rc;

CDC memdc;

CBitmap bmp;

CBitmap *pOldBmp;

CBrush br;

CBrush *pOldBr;

GetClientRect(&rc);

br.CreateSolidBrush(RGB(255,0,0));

memdc.CreateCompatibleDC(&dc);
bmp.CreateCompatibleBitmap(&dc,rc.Width(),rc.Height());
pOldBmp= memdc.SelectObject(&bmp);
pOldBr= memdc.SelectObject(&br);

//画图

.................................

//选出选入设备文本的工具(必不可少,否则内存会耗尽)

memdc.SelectObject(pOldBmp);

memdc.SelectObject(pOldBr);

//删除DC对象

memdc.DeleteDC();

}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值