gpt4 book ai didi

C++ Win32 GetDC 和何时 ReleaseDC

转载 作者:行者123 更新时间:2023-11-30 01:18:13 27 4
gpt4 key购买 nike

在我的程序(游戏)中,我进行了 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com