作者PythonScript (Python)
看板C_and_CPP
标题[问题] 图形连续更新 UI 不冻结
时间Wed Aug 7 22:29:21 2019
开发平台(Platform): (Ex: Win10, Linux, ...)
MFC
想让图形根据给予的数据连续更新画面
每一个 frame 之间希望有 interval
看起来才连续动的感觉
试过 thread, 更新画面的时候, 还是没办法动 UI, UI 是冻结的
void delay()
{
// 方法1
this_thread::sleep_for(10ms);
// 方法2
int nextTime = time(0) + secs;
while (time(0) < nextTime);
}
thread testThread(delay);
testThread.detach();
请问我那边做错了吗
有翻到很古早很古早的 sample
是用 ON_WM_TIMER() 做的
运作起来就很顺了
请问这两者之间有什麽差异呢
谢谢
EDIT1
完整 code
https://pastebin.com/DEUsiG25
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.33.11.247 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1565188163.A.964.html
※ 编辑: PythonScript (114.33.11.247 台湾), 08/07/2019 22:29:41
1F:推 Schottky: 差异在於 MFC 不支援 thread 08/07 23:52
2F:→ Schottky: 我之前做过在 MFC 里面用 thread 更新画面,但那块画面 08/07 23:54
3F:→ Schottky: 是我自己用 OpenGL 画的,内容物与 MFC 无涉 08/07 23:54
4F:→ Schottky: 这个 thread 也可以送 message 催促 MFC 更新就是了 08/07 23:55
5F:→ xk4771127: 没看到code不知道怎麽帮忙 08/08 00:18
6F:推 boss0405: MFC可以透过thread更新UI啊,你要不要贴个完整的code看 08/08 00:46
7F:→ boss0405: 看 08/08 00:46
8F:推 Schottky: 是说你可能想反了,应该是让 MFC 去更新 UI 08/08 06:07
9F:→ Schottky: 另开 worker thread 去做耗时的运算并回报进度才对 08/08 06:07
※ 编辑: PythonScript (114.33.11.247 台湾), 08/08/2019 10:27:34
10F:→ PythonScript: 引擎是 3rd party setParameters 就是呼叫引擎里面 08/08 10:28
11F:→ PythonScript: 的图形旋转 这样一讲 我这样写好像怪怪的 08/08 10:29
※ 编辑: PythonScript (114.33.11.247 台湾), 08/08/2019 10:32:19
12F:推 obj: 更新ui元件要在uithread, 其他的 thread更新要用postmessage 08/08 22:43
13F:→ obj: 的方式到uithread 08/08 22:43
14F:推 xk4771127: 看起来你想做成dll,需要创一个thread然後callback 给u 08/09 01:35
15F:→ xk4771127: i绘图 08/09 01:35
※ 编辑: PythonScript (114.33.11.247 台湾), 08/09/2019 03:36:20
16F:→ PythonScript: 原来是这样 好的 感谢 08/09 03:37