C++ Win32 GetDC以及何时发布DC

Eva*_*ake 1 c++ winapi

在我的程序(游戏)中,我进行了GetDC()调用并将DC保存为全局.我想在程序结束时我只能发布ReleaseDC().

目前我遇到麻烦,因为有些事情没有正确.我使用具有各种功能的DC和计时器.

这可能导致这个问题吗?

(程序的大小太大,无法改变一切,看它是否会帮助......)

编辑:我唯一一个全球保存(并在窗口创建后设置)是

HDC hDC = GetDC(hWnd)
Run Code Online (Sandbox Code Playgroud)

然后,每当我需要做某事时:

HDC hdcMem = CreateCompatibleDC(hDC);
// everything
DeleteDC(hdcMem)
Run Code Online (Sandbox Code Playgroud)

然后在程序结束时:

ReleaseDC(hWnd, hDC);
Run Code Online (Sandbox Code Playgroud)

是否有可能在代码的各个地方进行所有绘图和对象选择导致这些"半罕见"问题?

另外,忘记注意,任何地方都没有GDI泄漏.

c-s*_*ile 5

您不应该长时间存储HDC.

一般而言,您不需要这样做.当你需要画一些你打电话的东西InvalidateRect(HWND, rc)时,OS可能会在你画画的地方发送WM_PAINT.

简而言之:避免在WM_PAINT之外绘图.