[問題] SendMessage

看板C_and_CPP (C/C++)作者 (行人)時間13年前 (2012/10/08 17:32), 編輯推噓7(7019)
留言26則, 7人參與, 最新討論串3/5 (看更多)
VC6.0 MFC 對於SendMessage這個函式, 我和我同事始終不懂為何不直接呼叫就好(或許會多一兩道工)? 反正兩者都會等待執行完畢, 而且直接呼叫明確許多。 我觀察到這個語法在Multi-Thread好像比較常出現, 但還是不知道為什麼... 有什麼樣的時機只有SnedMessage適合使用呢? 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.185.64

10/08 20:15, , 1F
也有PostMessage啊
10/08 20:15, 1F

10/08 20:16, , 2F
SendMessage是Windows最重要的溝通管道,想用就用吧
10/08 20:16, 2F

10/08 21:55, , 3F
"兩者" 指的是 SendMessage 和 PostMessage ??
10/08 21:55, 3F

10/08 21:56, , 4F
其實我也不太懂哪些情況一定要用send/post又要怎麼選擇
10/08 21:56, 4F

10/08 21:58, , 5F
SendMessage 是放在 msg-queue 裡面,還要等該 msg 被拿走
10/08 21:58, 5F

10/08 21:59, , 6F
PostMessage 是放在 msg-queue 裡面就不管了..
10/08 21:59, 6F

10/08 21:59, , 7F
如果有寫過 Auto-Setup 的東西 (http://0rz.tw/xws7Q)
10/08 21:59, 7F

10/08 22:00, , 8F
會發現,SendMessage 容易被卡死,但 PostMessage 卻又不能
10/08 22:00, 8F

10/08 22:00, , 9F
保證發出的訊息有被處理過,於是原po說的 multi-thread 加
10/08 22:00, 9F

10/08 22:01, , 10F
上 SendMessage 應是一個不錯的解決方案(吧?)
10/08 22:01, 10F

10/08 22:04, , 11F
(補一下,有誤歡迎指正)
10/08 22:04, 11F

10/08 22:07, , 12F
知道它們的差別,但不知道實務上要怎麼選擇 ="=
10/08 22:07, 12F

10/08 22:12, , 13F
A 行程怎麼直接呼叫 B 行程 (不是 B.exe) 的 foo 函數?
10/08 22:12, 13F

10/08 22:18, , 14F
直接呼叫應是 SendMessage,SendMessage 更精確的說是調用
10/08 22:18, 14F

10/08 22:18, , 15F
WndProc(直接調用,不會放到queue),PostMessage才會放到q~.
10/08 22:18, 15F

10/08 22:23, , 16F
不過跨執行緒的話似乎變得更複雜了...??
10/08 22:23, 16F

10/08 22:49, , 17F
我猜你的意思是,Process中有兩個Thread
10/08 22:49, 17F

10/08 22:51, , 18F
一個是WndProc,另一個是自設的FuncThread
10/08 22:51, 18F

10/08 22:52, , 19F
從FuncThread裡,SendMessage給WndProc的Event
10/08 22:52, 19F

10/08 22:52, , 20F
做某個function(),而不直接在FuncThread裡做function()
10/08 22:52, 20F

10/09 10:12, , 21F
L大說的沒錯,我指的就是這種情況!!
10/09 10:12, 21F

10/09 10:19, , 22F
曾經遇過資料庫的讀寫,跨執行緒操作就會當
10/09 10:19, 22F

10/09 10:19, , 23F
解決辦法就是SendMessage去WndProc處理
10/09 10:19, 23F

10/10 21:51, , 24F
function會讀或寫某個WndProc也會用到的資料
10/10 21:51, 24F

10/10 21:52, , 25F
所以就直接請WndProc去做,若自己呼叫就要處理同步
10/10 21:52, 25F

10/10 21:53, , 26F
就只是這麼單純而已吧
10/10 21:53, 26F
文章代碼(AID): #1GSfsef8 (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
1
1
完整討論串 (本文為第 3 之 5 篇):
1
1
7
26
1
2
2
6
文章代碼(AID): #1GSfsef8 (C_and_CPP)