我是原生 C++ 的新手。现在,我这样做了,当我按下鼠标左键时,它有一个 for 循环执行 InvalidateRect 并绘制一个矩形,并在每次迭代时将 X 增加框的大小。但是,C++ 在绘图方面比 C# 更快、更高效,它可以立即绘制所有这些内容。我想要的是它使矩形无效,显示矩形,等待 50 毫秒,然后继续循环。我试过 Sleep(50) 但它仍然等到绘画完成后才显示结果。我也试过 PeekMessage 但它没有改变任何东西。 任何帮助,将不胜感激。谢谢
最佳答案
DoEvents 基本上翻译为:
void DoEvents()
{
MSG msg;
BOOL result;
while ( ::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE ) )
{
result = ::GetMessage(&msg, NULL, 0, 0);
if (result == 0) // WM_QUIT
{
::PostQuitMessage(msg.wParam);
break;
}
else if (result == -1)
{
// Handle errors/exit application, etc.
}
else
{
::TranslateMessage(&msg);
:: DispatchMessage(&msg);
}
}
}
关于c++ - DoEvents 等同于 C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1415095/