- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DeleteDC的使用时机和易犯错误
DeleteDC的使用条件SUNNY.man一直以来,针对DC的操作自已都认为使用的很熟练,不会出什么问题。应该释放的都释放,应该删除的都删除。GetDC都ReleaseDC了。CreateDC也都使用了DeleteDC了,一定不会有什么问题。比如创建一个内存DC用如下的代码:Void InitMemDC(CDC *pDC){DestroymemDC();if(pDC){if(m_memDC.CreateCompatibleDC(pDC)){if(m_memBmp.LoadBitmap(lIDBMP)){m_pBitmapOld=m_memDC.SelectObject(m_memBmp);m_bCreateDC=TRUE;}}}//if pDC}Void DestroymemDC(){if(m_bCreateDC){if(m_memBmp.m_hObject) m_memBmp.DeleteObject(); if(m_memDC.m_hDC)m_memDC.DeleteDC();m_pBitmapOld=NULL;m_bCreateDC=FALSE;}}这种代码,在XP下,我一直用的好好的从没出现过任何问题,最近移植到WINCE6.0时下,在测试时我发现当连续使用35次时,系统死机。原因是什么呢,我百思不得其解。于是一点点的做代码增减试验,最终我确定就在上述两个函数之内。InitMemDC肯定没有什么问题因为我实在找不出错误的原因,那就说明错误发生在第二个函数内。可是就是一个释放DC的过程会有什么问题呢。我拿出MSDN。找到下面一句话An application must not delete a device context whose handle was obtained by calling CWnd::GetDC. Instead, it must call CWnd::ReleaseDC to free the device context. The CClientDC and CWindowDC classes are provided to wrap this functionality. The DeleteDC function is generally used to delete device contexts created with CreateDC, CreateIC, or CreateCompatibleDC.看完之后我更纳闷了,我的使用上没有什么问题啊。这样我又想其它的解决办法折腾了一上午,问题还是没有解决。只好再看MSDN,最终真理再一次被证明,“所有的错误都是因为你没有好好看MSDN”。我下面这句话:An application should not call DeleteDC if objects have been selected into the device context. Objects must first be selected out of the device context before it is deleted. 难道仅仅是因为我没有把原先的Cbitmap选出来吗,我立马在DestroyDC首句加上了M_memDC.SelectObject(m_pOldbmp);就像热水泼在雪上,所有的奇怪错误都消失了。一切都运行正常了。我自已猜想了了下,一定是在DeleteDC时,MS进行了Objects的保存或是复制操作,总之会做一些内容。这样就留下了一些痕迹,也就占用了一些系统内核空间。所以才出现没释放的错误。XP下一定也会出错误,只不过是因为空间比较大,没有达到上限而已,这个试验我没有做。 As_mhy@163.com
您可能关注的文档
- 高中化学选修三第一章1.2.1.ppt
- 铜业公司点检定修实施方案.doc
- 2012学风建设月查课方案.doc
- 终身学习与职业发展考题.doc
- 2012北京各区物理一模 123章 期末复习.doc
- 苏教版四年级下册《图形的平移》dwm ppt 课件.ppt
- 项目质量管理涉及计算的基础知识.pdf
- 对于大助的工作设想.docx
- 扬尘降噪方案报审表.doc
- TFT显示屏的程序.doc
- 2025年一级建造师考试《水利水电工程管理与实务》冲刺必刷卷.docx
- 2025年一级建造师考试《水利水电工程管理与实务》逆袭破题卷1.docx
- 2025年一级建造师考试《市政工程管理与实务》冲刺必刷卷 .docx
- 2025年一级造价工程师考试《建设工程计价》预习卷.docx
- 2025年一级造价工程师考试《建设工程造价管理》预习卷.docx
- 2025年一级造价工程师考试《建设工程造价案例分析(安装专业)》预习卷.docx
- 2025年一级造价工程师考试《建设工程造价案例分析(土建专业)》预习卷.docx
- 2025年中级会计考试《会计实务》冲刺提分卷.docx
- 2025年中级会计考试《财务管理》冲刺提分卷.docx
- 2025年中级会计考试《财务管理》全真模拟卷.docx
最近下载
- 2024年出版专业资格考试《基础知识》(中级)真题及答案.pdf VIP
- 高壓电机修理质量过程控制管理办法.doc VIP
- 2025年河北石家庄学院公开选聘事业单位工作人员25名备考题库及答案解析.docx VIP
- 鼻炎中医PPT课件.pptx VIP
- 新能源基础知识PPT精品课件-.pptx VIP
- 2025年河北石家庄辛集市事业单位公开招聘工作人员191名备考题库及答案解析.docx VIP
- 2025年南京江北新区公开招聘社区工作者60人笔试备考题库及答案解析.docx VIP
- 一年级上册生字练字帖.docx VIP
- 2025年天翼云解决方案架构师认证考试题库-上(单选题汇总).docx VIP
- 克莱门特w3000用户手册(中文版).pdf VIP
文档评论(0)