[問題] timer與mousemove 無法同時做

看板C_and_CPP (C/C++)作者 (noname)時間15年前 (2010/10/24 04:14), 編輯推噓1(1012)
留言13則, 4人參與, 最新討論串1/1
最近用VC++寫了一個程式 碰到了一個問題 只要mousemove移動 timer就會停止做事 就我的程式而言 應該要同時做才對 但經過多台電腦測試 發覺 有些電腦會有這些問題 有些則不會 不知該如何解決 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.112.80.1

10/24 09:14, , 1F
這兩個是 message 都由執行續處理, 一般情況下不會同時執行
10/24 09:14, 1F

10/24 09:23, , 2F
timer是做什麼事?
10/24 09:23, 2F

10/24 10:28, , 3F
PumpMessage or create Thread for timer
10/24 10:28, 3F

10/24 13:26, , 4F
那如果在mousemove在call一次timer 會先做timer嗎
10/24 13:26, 4F

10/24 13:40, , 5F
如果是指WM_TIMER,它的優先是最低的,當有message進來
10/24 13:40, 5F

10/24 13:40, , 6F
OS會優先將其他message排到前面,最後都沒事幹,才會輪
10/24 13:40, 6F

10/24 13:41, , 7F
到WM_TIMER,甚至系統太忙會直接被丟掉,收不到
10/24 13:41, 7F

10/24 13:43, , 8F
而mousemove時,message是狂丟的,WM_TIMER將處理不到
10/24 13:43, 8F

10/24 13:44, , 9F
所以如果是精準度要很高的動作,請開thread模擬timer或
10/24 13:44, 9F

10/24 13:45, , 10F
OS有提供高精度的timer,一時忘了是哪個API,很少人用
10/24 13:45, 10F

10/24 13:57, , 11F
找到了..是用timeBeginPeriod
10/24 13:57, 11F

10/24 14:00, , 12F
要用timeSetEvent搭配timeBeginPeriod才對..
10/24 14:00, 12F

10/24 23:08, , 13F
感謝 詳細解答!!
10/24 23:08, 13F
文章代碼(AID): #1Cmq8kB3 (C_and_CPP)
文章代碼(AID): #1Cmq8kB3 (C_and_CPP)