SetWindowText 慢,Win32 C++

Gro*_*mit 5 user-interface winapi

我有一个简单的应用程序,我正在读取一些内部变量并将它们发布到菜单上的 EditControl。

这是一个代码片段

case 0:
        SetWindowText(GetDlgItem( gHWnd, IDC_PACKETID ), 
                     (LPSTR)std::to_string(long long(NC->mPacketNum)).c_str());
        break;
Run Code Online (Sandbox Code Playgroud)

所以那里发生了很多事情。我只是想将数字转换为可以在编辑对话框中显示的内容。这太慢了,只要进入这个部分,我就可以从 50Hz 下降到大约 30Hz。

有什么想法可以显着加快速度吗?

Ben*_*igt 1

对于高帧速率,您需要使用 Direct2D 或 OpenGL 渲染,而不是内置的 EDIT 窗口类。

如果您不需要高帧速率,只需要高吞吐量,则可以InvalidateRect仅在收到 PAINT 消息时更改文本。Windows 将限制它向您发送的速率WM_PAINT。或者使用计时器。通过这种方式,您只需将新值存储在内部变量中,当您收到绘制或计时器回调时,将其从间隔变量移动到 EDIT 控件。