[问题] 图形连续更新 UI 不冻结

楼主: PythonScript (Python)   2019-08-07 22:29:21
开发平台(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
作者: Schottky (顺风相送)   2019-08-07 23:52:00
差异在于 MFC 不支援 thread我之前做过在 MFC 里面用 thread 更新画面,但那块画面是我自己用 OpenGL 画的,内容物与 MFC 无涉这个 thread 也可以送 message 催促 MFC 更新就是了
作者: xk4771127 (阿焦)   2019-08-08 00:18:00
没看到code不知道怎么帮忙
作者: boss0405 (boss)   2019-08-08 00:46:00
MFC可以透过thread更新UI啊,你要不要贴个完整的code看看
作者: Schottky (顺风相送)   2019-08-08 06:07:00
是说你可能想反了,应该是让 MFC 去更新 UI另开 worker thread 去做耗时的运算并回报进度才对
楼主: PythonScript (Python)   2019-08-08 10:28:00
引擎是 3rd party setParameters 就是呼叫引擎里面的图形旋转 这样一讲 我这样写好像怪怪的
作者: obj   2019-08-08 22:43:00
更新ui元件要在uithread, 其他的 thread更新要用postmessage的方式到uithread
作者: xk4771127 (阿焦)   2019-08-09 01:35:00
看起来你想做成dll,需要创一个thread然后callback 给ui绘图
楼主: PythonScript (Python)   2019-08-09 03:37:00
原来是这样 好的 感谢

Links booklink

Contact Us: admin [ a t ] ucptt.com