MFC訊息迴圈中幾個函式的差異

2021-04-13 01:51:11 字數 896 閱讀 7484

windows程式設計師因該都知道訊息迴圈的!本人曾經寫過類似於此篇的文章,無奈當時沒有去看多執行緒,講的比較生硬,也許受到眾多讀者的批判或質疑,而且那個使用者的密碼也忘記了,無法修改,只能舊事重提!

這次主要講解4個(2對)函式  傳送訊息的函式和接受訊息的函式各2個;

1   傳送訊息的函式

這裡主要講 sendmessage()和postmessage()

區別:     sendmessage()將訊息傳送到相應的視窗只待訊息被處理方返回;即它是同步的函式;

如下例msg msg;

msg  = wm_keydown;

sendmessage(msg);

messagebox("sendmessage");

只有sendmessage()函式返回之後才能顯示對話方塊;但是如果是postkmessage()

msg msg;

msg  = wm_keydown;

postmessage(msg);

messagebox("sendmessage");

對話方塊不會等postkmessage()函式返回直接顯示;因為postkmessage()是非同步執行的;

2   接收訊息的函式

這裡主要講 getmessage()和peekmessage()

區別:   1    getmessage()比peekmessage()少乙個引數,peekmessage可以設定將訊息從訊息佇列取出之後訊息是否還繼續放在訊息佇列或者清除掉;

2      getmessage()去訊息佇列取訊息直到有乙個訊息為止,而peekmessage發現訊息佇列中沒有訊息時同樣返回;讓出cpu時間去做別的事情;

過去以為自己很了解這幾個函式,真正寫點東西的時候發現說的還是不清楚!望大家見諒,如果有什麼不對的地方希望給與改正!

MFC中訊息迴圈處理的幾個函式之間的區別

1 函式getmessage 是從呼叫執行緒的 訊息佇列 裡取得乙個訊息並將其放於指定的結構。此函式可取得與指定視窗聯絡的訊息和由postthreadmesssge寄送的執行緒訊息。此函式接收一定範圍的訊息值。getmessage不接收屬於其他執行緒或 應用程式 的訊息。獲取訊息成功後,執行緒將從 ...

關於「foreach迴圈」中遇到的幾個問題總結

1.列表頁面用 foreach迴圈 的時候資料沒有顯示,此時需要檢查你物件模型中屬性的首字母是否大寫,切記不能大寫 本人在做乙個專案的時候,物件模型是別人建立的,屬性首字母大寫了,導致最後列表頁面資料不顯示,後來一問老師,說改為小寫,瞬間好了 2.資料儲存不到表裡 在對映檔案中沒有指定資料表列名的時...

MFC中的訊息處理函式

1 在windows api程式設計中,直接在訊息處理函式中編寫wm paint處理 2 在mfc中,cframewnd的訊息處理過程在 呢?mfc時如何將訊息處理函式和視窗關聯起來的。在cframewnd createex中,呼叫precreatewindows來註冊視窗。afxdefregist...