vc中DC资源的正确利用

今天写程序涉及到DC,运行一段时间就出错。后经检查出在两个方面。
1.在OnTimer()中连续执行如下语句:
HDC hDC = GetDC()->m_hDC;
m_table.Refresh(hDC);
这样会造成dc资源的耗尽,原因是GetDC() 返回CDC*,要把CDC*所指的资源及时删除,才能连续使用。修改如下:
CDC * pDC = GetDC();
HDC hDC = pDC->m_hDC;
m_table.Refresh(hDC);
pDC->DeleteDC();

2.在OnTimer()中连续执行如下语句:

       m_hDC = ::CreateCompatibleDC(hDstDC);

       这句运行时间长也会出错,原因是DC资源耗尽,作如下修改:

        m_hDC = ::CreateCompatibleDC(hDstDC);被放到DlgInit()中只执行一次,就不会出错。

从以上两个总题看出,在VC开发中,一定注意资源的使用,不用的资源用完一定删除,在OnTimer中尽量不要申请资源。

        

阅读更多
个人分类: vc++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭