GetDC(),ReleaseDC()】的更多相关文章

调用CWnd::GetDC函数跟CWnd::ReleaseDC函数的代码运行时,会出现 4 个字节的内存泄漏. Microsoft 已经确认这是在本文开头部分列出的 Microsoft 产品中的缺陷. 若要避免此问题,请使用GetDC方法和ReleaseDC方法的CWnd类版本.使用GetDC函数和ReleaseDC函数. http://support.microsoft.com/kb/819635/zh-cn 再现现象的步骤 中的方法是从CWnd派生的类的一部分中,插入下面的代码在您的应用程序…
用GetDC()得到的DC, 必须调用ReleaseDC()用CreateDC()创建的DC, 必须调用DeleteDC() 两者是不能混淆的.一种典型的错误代码如下:CDC* pDC = GetDC();…..//做一些无聊的事….. pDC->DeleteDC(); //做了错误的事 一般情况下, 上面这个代码也能够工作, 就是有时要报一点CHandleMap::RemoveHandle(HANDLE h)异常, 跟踪进代码也看不出啥问题.区别:ReleaseDC()仅是释放对DC的引用De…
重现行为的步骤 是从 CWnd 派生的类的一个方法中插入下面的代码在您的应用程序中: CDC *pDC; RECT rect; GetClientRect (&rect); for (int i = 0; i < 1000; i++) { pDC = GetDC (); ReleaseDC (pDC); } 如果运行此代码,并且之前和之后运行该代码然后检查系统内存您注意到系统内存泄漏每次迭代的四个字节. 如果您以下面的代码更改该代码,内存泄漏不会发生: HDC hDC; RECT rect;…
windows编程问题 第一种情况显示出来的字很正常. case WM_PAINT: gdc = BeginPaint (hwnd, &ps); TextOut (gdc, 0, 0, s, strlen (s)); EndPaint (hwnd, &ps); break; 第二种情况显示的字不停闪烁. case WM_PAINT: gdc = GetDC (hwnd); TextOut (gdc, 0, 0, s, strlen (s)); ReleaseDC (hwnd, gdc);…
CDC和HDC的区别与转换 一.区别与联系HDC是句柄:CDC是MFC封装的Windows   设备相关的一个类:CClientDC是CDC的衍生类,产生对应于Windows客户区的对象HDC是WINDOWS的一种数据类型,是设备描述句柄.而CDC是MFC里的一个类,它封装了几乎所有的关于HDC的操作.   也可以这样说,HDC定义的变量指向一块内存,这块 内存用来描述一个设备的相关的内容,所以也可以   认为HDC定义的是一个指针:而CDC类定义一个对象,   这个对象拥有HDC定义的一个设备…
1.windows编程中,所有的操作都放到窗口过程中进行,main函数只用于描述窗口基本信息. 2.用于获取设备环境句柄时,用BeginPaint/EndPaint,消耗cpu小,但占内存大;用GetDC/ReleaseDC,消耗CPU大,但占内存小. 3.TextOut在同一客户区输出多行内容是,需要不同的x,y坐标才能实现,否则会输出到同一行,造成无法显示. 4.大部分标识参数都需要按位运算,而不是逻辑运算. 5.删除文件函数DeleteFile在调用时,必须确保所删除的文件不在打开状态,否…
WM_PAINT 消息的触发 Windows 程序在以下情况会触发WM_PAINT消息: 窗口被移动导致被遮盖部分暴露出来 用户调整窗口的大小(当窗口类的 style 字段被设置为 CS_HREDRAW 和 CS_VREDRAW) 调用 ScrollWindow 或 ScrollDC 函数滚动客户区 调用 InvalidateRect 或 InvalidateRgn 函数生成 WM_PAINT 获取设备环境句柄 需要在屏幕上绘图的时候,需要先获取到设备环境句柄,这里有两种方式: 1.调用 Beg…
1.今天向客户演示程序,不巧崩溃了.最后发现是使用了GetDC()后没有使用ReleaseDC()引起的. 2.最早听说GetDC()和ReleaseDC()是从前任带头码哥那里听说的,那时候仅仅用<VC 6.0 应用指南><深入浅出MFC> <从入门到精通>等书籍,最多就是有前卫人士从网上下载个代码.从别处拷贝个代码过来看看,从来没听说过msdn 尽管这样说,无奈我从来没有当真过.今天就被自己给碰到了. 3.网上查了查,还有人说的更玄虚: A.::GetDC()和::…
DeleteDC 该函数删除指定的设备上下文环境(DC). 原型: BOOL DeleteDC(HDC hdc): 参数: hdc:设备上下文环境的句柄. 返回值: 成功,返回非零值:失败,返回零.调用GetLastError获取扩展错误信息. 说明: 如果一个设备上下文环境的句柄是通过调用GetDC函数得到的,那么应用程序不能删除该设备上下文环境,它应该调用ReleaseDC函数来释放该设备上下文环境. ReleaseDC 函数释放设备上下文环境(DC)供其他应用程序使用.函数的效果与设备上下…
最近做的项目中需要显示视频监控窗口,从采集卡中读到图像的数据,需要实时显示出来,而且速度比较快. 由于比较简单,就直接使用了GDI画图,以前复杂的都用openGL啥的工具了,这次这个简单,就直接用GDI了. 先获取DC,然后画图 pDC = this ->GetDC(); // 获得显示控件的 DC this->GetClientRect(rect); MemDC.CreateCompatibleDC(NULL); //这时还不能绘图,因为没有地方画 ^_^ //下面建立一个与屏幕显示兼容的位…