如何从HDC建立一个CDC类

念念丶4766
2013-10-11 · TA获得超过2725个赞
知道小有建树答主
回答量:939
采纳率:0%
帮助的人:2251万
展开全部
例如:下拉式列表、组合框和按钮。通过hDC你将接收到绘制消息。下面是将HDC转换成你更熟悉的CDC的程序段。你也可以将该技巧用在其他任何MFC类和Windows句柄的转换中。void MyODList::DrawItem(LPDRAWITEMSTRUCT lpDrawItem){CDC myDC;myDC.Attach(lpDrawItem->hDC); //在此插入其他需要的代码。 //如果你不将句柄分离,它将被删除,从而导致问题。 myDC.Detach();}另一个方法是调用CDC类的FromHandle方法: CDC * pDC = CDC:FromHandle(lpDrawItem->hDC);相互转换: 方法一: 此方法在设备结束时不会销毁原来的资源(即:hDC,hBitmap) CDC *pDC = CDC::FromHandle(hDC);方法二: 此方法在设备结束时会销毁原来的资源(即:hDC,hBitmap)CDC dc;dc.Attach(hDC);关于HDC CDC 首先:CDC 不可以释放. FromHandle 是通过 HDC 来创建了一个CDC 对象,以方便操作,释放 DC 的操作应该针对于HDC 而非此CDC , 如果释放了它 pDC->ReleaseDC,就会造成隐患. HDC hDC = GetDC(hWnd); CDC *pDC = CDC::FromHandle(hDC); 这两者是指向的一个DC对象,只能释放一次,而这个释放应该针对 hDC 而非 pDC. 然后:GetDC和ReleaseDC的调用匹配,CreateDC和DeleteDC的调用匹配。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式