如何从HDC建立一个CDC类
来源:百度文库 编辑:神马文学网 时间:2024/06/08 05:12:38
有时Windows API将会给你一个DC句柄,你可以通过它建立一个CDC类。例如:下拉式列表、组合框和按钮。通过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的调用匹配。
GetDC是从窗口获取現有的DC,而CreateDC是创建DC,所以ReleaseDC和DeleteDC的作用一个是释放,一个是销毁。
如何从HDC建立一个CDC类
HDC CDC CClientDC CWindowDC-it群
hWnd,hDC,CDC有什么区别 - 猎手小屋 - CSDN博客
cdc
抗日战争中飞虎队如何从建立到解散
如何建立一个 XML 的开发环境
如何建立一个P2P流媒体网络电视台
如何建立一个成功的网站
如何建立一个管理型的组织?
如何建立一个管理型的组织?
如何建立一个管理型的组织?
如何建立一个成功的网站
如何建立一个获利的交易系统
如何建立一个公司的会计体系?
【一个好的交易系统是如何建立的 】 - 《如何建立交易系统》 - 视频 - 优酷视频 - ...
【一个好的交易系统是如何建立的 】 - 《如何建立交易系统》 - 视频 - 优酷视频 - ...
从美国历史看如何建立社会和谐
转载:Barrons?-?如何建立一个完整的企业财务模型
如何寻找领导人建立一个稳定的个人事业
转载:Barrons-如何建立一个完整的企业财务模型
一个好的交易系统是如何建立的
VC++中的CDC类(VC++学习笔记)
CDC::DrawEdge
一个企业如何从优秀走向卓越?