[問題] 圖形連續更新 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