- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的程序(游戏)中,我进行了 GetDC() 调用并将 DC 保存为全局。我想我可以在程序结束时只使用 ReleaseDC()。
目前我遇到了一些问题,因为有些东西绘制不正确。我将 DC 与各种功能一起使用,并在计时器中使用。
这可能是导致问题的原因吗?
(程序的大小太多了,无法更改所有内容,看看它是否有帮助...)
编辑:我全局保存的唯一一个(并在创建窗口后设置它)是
HDC hDC = GetDC(hWnd)
然后,每当我需要做某事时:
HDC hdcMem = CreateCompatibleDC(hDC);
// everything
DeleteDC(hdcMem)
然后在程序的最后:
ReleaseDC(hWnd, hDC);
是否有可能是在代码的不同位置进行的所有绘图和对象选择导致了这些“半罕见”问题?
另外,忘了注意,任何地方都没有 GDI 泄漏。
最佳答案
HDC 不宜长期存放。
而且通常您不需要这样做。当您需要绘制一些东西时,您可以调用 InvalidateRect(HWND, rc)
并且可能时操作系统会向您发送 WM_PAINT 以供您绘制。
简而言之:避免在 WM_PAINT 之外绘制。
关于C++ Win32 GetDC 和何时 ReleaseDC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22926229/
我创建了一个简单的应用程序来结合使用 opengl 和 MFC。问题是我有以下代码 ReleaseDC(m_hWnd,m_hDC); 根据 https://msdn.microsoft.com/en-
用C++编程,一旦我们通过GetDC获得context device就可以使用了。如果我们不调用ReleaseDC就退出程序会发生什么不好的事情? 最佳答案 来自 the docs The Relea
在我的程序(游戏)中,我进行了 GetDC() 调用并将 DC 保存为全局。我想我可以在程序结束时只使用 ReleaseDC()。 目前我遇到了一些问题,因为有些东西绘制不正确。我将 DC 与各种功能
这个问题在这里已经有了答案: Difference between GetDC() and BeginPaint() (3 个答案) 关闭 4 年前。 我一直在尝试使用设备上下文,并从 MSDN 文
对于使用 D3D11_RESOURCE_MISC_GDI_COMPATIBLE 创建的纹理,IDXGISurface1 GetDC/ReleaseDC 的线程安全规则是什么? 我可以在另一个线程上的
可以使用GetDC/ReleaseDC在窗口客户区绘制。但是为了响应 WM_PAINT 消息,必须使用 BeginPaint/EndPaint。这有什么特别的吗? 最佳答案 当窗口的一部分需要更新时,
我要编译an old (1998) implementation of Edge Collapse from Game Developer's Magazine (项目文件在 Visual Studi
我是一名优秀的程序员,十分优秀!