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。
有什么想法可以显着加快速度吗?
对于高帧速率,您需要使用 Direct2D 或 OpenGL 渲染,而不是内置的 EDIT 窗口类。
如果您不需要高帧速率,只需要高吞吐量,则可以InvalidateRect仅在收到 PAINT 消息时更改文本。Windows 将限制它向您发送的速率WM_PAINT。或者使用计时器。通过这种方式,您只需将新值存储在内部变量中,当您收到绘制或计时器回调时,将其从间隔变量移动到 EDIT 控件。