这是我第一次与Windows应用程序打交道,有点沮丧。我只有一个简单的代码,创建了一个Win32(Visual C++)GUI应用程序,但一旦我启动可执行文件,我的CPU占用率就会上升到30%(超过应用程序),在寻找解决方法时,我发现有人说在消息循环(GetMessage或PeekMessage)中休眠10毫秒可以解决这个问题,而事实证明确实如此。但由于这是一个事件处理程序循环,我不想突然间让我的代码休眠,希望能够得到一些解决方案的解释。
下面是“问题区域”的概述。
感谢您提前的帮助。
Caio Guedes
下面是“问题区域”的概述。
while (TRUE) {
if (PeekMessage(&g_Msg, NULL, 0, 0, PM_REMOVE)) {
TranslateMessage(&g_Msg); // translate keystroke messages into the right format
DispatchMessage(&g_Msg); //Send the message to the WindowProc function
if (g_Msg.message == WM_QUIT)
break;
} else {
// Run d3d code here
}
// Sleep(1); REDUCES CPU!
}
感谢您提前的帮助。
Caio Guedes
PeekMessage
不会等待任何东西,因此在循环中这样做将确保 CPU 一直处于繁忙状态... - Mats Petersson