gpt4 book ai didi

c++ - GetDC ReleaseDC 特定上下文中的高 CPU 使用率

转载 作者:行者123 更新时间:2023-11-27 23:45:30 25 4
gpt4 key购买 nike

<分区>

我一直在尝试使用设备上下文,并从 MSDN 文档中阅读了很多相关内容。我创建了一个使用双缓冲进行绘画的程序,但我遇到了一个小问题(不是真正的问题,而是出于我的好奇心)。

根据 MSDN,您应该在窗口上绘图时使用 BeginPaint 和 EndPaint,而在其他任何地方执行绘图时都应该使用 releaseDC 和 getDC。

无论如何,我决定尝试使用 GetDC 和 ReleaseDC,我设法让它工作 唯一的问题是我的程序生命周期内的 CPU 使用率非常高。我说的是 25% 到 50% 的 CPU 使用率。

我将发布我在 WM_PAINT 中的代码。对于为什么会发生这种情况的任何提示,我们将不胜感激。

paintWindow 是我自己的函数,它创建一个离屏 DC,渲染帧并将内容复制到 hdc。代码并不重要,因为我 100% 肯定它与我遇到的问题无关。

下面的代码可以完美运行。没有高 CPU 使用率。一切都很酷。

CASE WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
paintWindow(hdc);
EndPaint(hWnd, &ps);

一旦我尝试做这样的事情:

hdc = GetDC(hWnd);
paintWindow(hdc);
ReleaseDC(hWnd, hdc);

代码仍然像以前一样完美运行,除了 CPU 使用率非常高。这或多或少是一个优化问题,出于我自己的好奇心,我想知道背景的确切区别是什么,如果我想实现与 BeginPaint 和 EndPaind 相同的东西,我应该怎么做。

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