在我的程序(游戏)中,我进行了GetDC()调用并将DC保存为全局。我想在程序结束时我可以发布ReleaseDC()。
目前我遇到麻烦,因为有些事情没有正确。我使用具有各种功能的DC和计时器。
这可能导致这个问题吗?
(程序的大小太大,无法改变一切,看它是否会有帮助......)
编辑:
是唯一一个全球保存的(并在创建窗口后设置)HDC hDC = GetDC(hWnd)
然后,每当我需要做某事时:
HDC hdcMem = CreateCompatibleDC(hDC);
// everything
DeleteDC(hdcMem)
然后在程序结束时:
ReleaseDC(hWnd, hDC);
是否有可能在代码的各个地方进行所有绘图和对象选择会导致这些“半罕见”问题?
另外,忘了注意,任何地方都没有GDI泄漏。
答案 0 :(得分:5)
你不应该长时间存储HDC。
一般来说,你不需要这样做。当你需要画一些东西时,你可以调用InvalidateRect(HWND, rc)
,当可能的情况下,操作系统会向你发送WM_PAINT,你可以在那里画画。
简而言之:避免在WM_PAINT之外绘图。