6.1 设备环境类
CMetalFileDC,CWindowDC, CClientDC; CPaintDC
当创建一个CDC对象后,重要的一点就是在合适的时候将其销毁,Windows限制了可用设备环境的数目, 如果没有成功释放,程序在退出的时候,将有小部分内存泄漏。
一般情况下,我们会在消息处理函数中创建CDC对象,如下在stack中构建对象
CRect rect;
CClientDC dc(this);
dc.GetClipBox(rect);
//dc automatically released
CRect rect;
CDC *pDC = GetDC();
pDC->GetClipBox(rect);
ReleaseDC(pDC);
GDI 对象
如何延长GDI 选择的有效期
m_pPrintFont->CreateFont(30, 10,.....);
CFont *pOldFont = pDC->SelectObject(m_pPrintFont);
m_hOldFont = (HFONT)pOldFont->GetSafeHandle();
if (m_hOldFont)
pDC->SelectObject(CFont::FromHandle(m_hOldFont));