據我所知執行緒創建后是沒有訊息佇列的.需要呼叫GetMessage 或 PeekMessage 之類關于訊息的函式。可是我呼叫后依然接收不到資訊
MSDN解釋:
雖然知道中文意思 但是完全搞不懂
下面是 執行緒現在做的事:易語言代碼
.版本 2
.支持庫 spec
.子程式 執行緒
.區域變數 msg, MSG, , , MSG型別的變數 要來接收資訊
PeekMessage (msg, 0, #WM_USER, #WM_USER, #PM_NOREMOVE) ' 第一次檢查訊息佇列 “ 回傳0 ” 這個應該就是創建佇列把?
.判斷回圈首 (運行中 = 真)
PeekMessage (msg, 0, #WM_USER, #WM_USER, #PM_REMOVE) ' 檢查訊息佇列 “ 回傳0 ”
除錯輸出 (msg.message, msg.wParam, msg.lParam) ' 輸出的都是 0 啊
Sleep (2000)
.判斷回圈尾 ()
然后我就 API_PostThreadMessage (執行緒Id, 1, 1, 1) 回傳0 再呼叫GetLastError () 回傳1159
還是投遞失敗啊 為什么
PostThreadMessage 后面的3個引數可以自定把?
求大牛 在線等回答
uj5u.com熱心網友回復:
用 getmessage ,不用sleep,不用擔心回圈到假死狀態dim msgs as MSG
do
if getmessage(0,0,0,msgs) = 0 then exit do
select case msgs.message
case WM_MOUSEMOVE
......
case ...
.........
end select
loop
這么個流程
uj5u.com熱心網友回復:
若是非要用 peekmessage 需要用 waitmessage 替換 sleep轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/129664.html
標籤:API
上一篇:visual basic
