[問題] 圖形連續更新 UI 不凍結

看板C_and_CPP作者 (Python)時間6年前發表 (2019/08/07 14:29), 6年前編輯推噓5(5011)
留言16則, 5人參與, 6年前最新討論串1/1
開發平台(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://www.ptt.cc/bbs/C_and_CPP/M.1565188163.A.964.html ※ 編輯: PythonScript (114.33.11.247 臺灣), 08/07/2019 22:29:41

08/07 23:52, 6年前 , 1F
差異在於 MFC 不支援 thread
08/07 23:52, 1F

08/07 23:54, 6年前 , 2F
我之前做過在 MFC 裡面用 thread 更新畫面,但那塊畫面
08/07 23:54, 2F

08/07 23:54, 6年前 , 3F
是我自己用 OpenGL 畫的,內容物與 MFC 無涉
08/07 23:54, 3F

08/07 23:55, 6年前 , 4F
這個 thread 也可以送 message 催促 MFC 更新就是了
08/07 23:55, 4F

08/08 00:18, 6年前 , 5F
沒看到code不知道怎麼幫忙
08/08 00:18, 5F

08/08 00:46, 6年前 , 6F
MFC可以透過thread更新UI啊,你要不要貼個完整的code看
08/08 00:46, 6F

08/08 00:46, 6年前 , 7F
08/08 00:46, 7F

08/08 06:07, 6年前 , 8F
是說你可能想反了,應該是讓 MFC 去更新 UI
08/08 06:07, 8F

08/08 06:07, 6年前 , 9F
另開 worker thread 去做耗時的運算並回報進度才對
08/08 06:07, 9F
※ 編輯: PythonScript (114.33.11.247 臺灣), 08/08/2019 10:27:34

08/08 10:28, 6年前 , 10F
引擎是 3rd party setParameters 就是呼叫引擎裡面
08/08 10:28, 10F

08/08 10:29, 6年前 , 11F
的圖形旋轉 這樣一講 我這樣寫好像怪怪的
08/08 10:29, 11F
※ 編輯: PythonScript (114.33.11.247 臺灣), 08/08/2019 10:32:19

08/08 22:43, 6年前 , 12F
更新ui元件要在uithread, 其他的 thread更新要用postmessage
08/08 22:43, 12F

08/08 22:43, 6年前 , 13F
的方式到uithread
08/08 22:43, 13F

08/09 01:35, 6年前 , 14F
看起來你想做成dll,需要創一個thread然後callback 給u
08/09 01:35, 14F

08/09 01:35, 6年前 , 15F
i繪圖
08/09 01:35, 15F
※ 編輯: PythonScript (114.33.11.247 臺灣), 08/09/2019 03:36:20

08/09 03:37, 6年前 , 16F
原來是這樣 好的 感謝
08/09 03:37, 16F
文章代碼(AID): #1TIk13ba (C_and_CPP)