作者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/m.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