c++ - DoEvents 等同于 C++?

标签 c++ windows winapi

我是原生 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/

相关文章:

c++ - 棒球击球率计划

c++ - winsock2中发送其他数据类型

python - 单击应用程序时 Windows-Pyinstaller 错误 "failed to execute script "

windows - 调整窗口大小时如何平滑丑陋的抖动/闪烁/跳跃,尤其是拖动左/上边框(Win 7-10;bg、bitblt 和 DWM)?

c++ - Windows 资源管理器打开文件夹还原

windows - 为什么鼠标在 DISCL_EXCLUSIVE | 中消失了? DISCL_FOREGROUND 模式?

c++ - 将类字段传递给成员函数

c++ - 如何报告在 QuaGzipFile(QuaZIP 库)上读取数据的进度

c++ - 如何将 boost::hana::Sequence 的元素全部满足一个概念来表述为一个概念?

windows - Visual Studio 2012 的图形用户界面是如何实现的以及我们如何制作外观相似的应用程序