![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
MFC调用GetDC()函数后哪些情况下需要释放DC?
我看MSDN上说的有些情况可以不用释放DC,就是该窗口拥有自己的DC的时候,不过这句话的意思我不太懂。...
我看MSDN上说的有些情况可以不用释放DC,就是该窗口拥有自己的DC的时候,不过这句话的意思我不太懂。
展开
1个回答
展开全部
略... 下面用一些简单的代码看看如果使用这些类 HDC使用, 每次画线等操作都不MFC封装的类多了个HDC的参数 执行在哪个设备描述表操作 HDC hdc=::GetDC(m_hWnd);//m_hWnd == this->m_hWnd 即当前窗口句柄 MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL); LineTo(hdc,point.x,point.y); ::ReleaseDC(m_hWnd,hdc);//必须和GetDC配对 可以看到HDC的使用较麻烦, 而且如果::GetDC和::ReleaseDC不配对的话,会造成错误 CDC *pDC=GetDC(); pDC->MoveTo(m_ptOrigin); pDC->LineTo(point); ReleaseDC(pDC); CClientDC dc(this); dc.MoveTo(m_ptOrigin); dc.LineTo(point); CWindowDC dc(this); CWindowDC dc2(GetDesktopWindow());//获得整个桌面的句柄, 一些桌面特效程序使用 dc.MoveTo(m_ptOrigin); dc.LineTo(point); CPaintDC dc(this); dc.MoveTo(m_ptOrigin); dc.LineTo(point); 可以看到 MFC 的类使用方便很多, 因为它们都在构造函数和析构函数调用了响应的函数进行DC的获取和释放. 略...
求采纳
求采纳
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询