[英]MFC Message flow for controls?
在MFC中,假設我有一個對話框,在這個框中,它有一個子CListCtrl,然后我用鼠標點擊這個CListCtrl,我們知道最終WM_LBUTTONDOWN消息被發送到CListCtrl。 我的問題是:這個WM_LBUTTONDOWN消息是如何到達那里的? 兩種可能性:
哪一個是真的?
謝謝。
輸入消息永遠不會發送到窗口。 它們被發布到與窗口關聯的消息隊列中,等待通過其中一個消息檢索功能( GetMessage , PeekMessage等)進行檢索。
根據對話框是模態還是無模式 ,通過嵌套模態循環(對於模態對話框)或應用程序的消息循環來檢索消息。 然后將消息傳遞給DispatchMessage ,以查找收件人(從鼠標指針下方最頂層的可見窗口開始,既不禁用也不透明),並調用關聯窗口的窗口過程。 窗口過程可以決定它是否處理消息。 窗口過程通常調用DefWindowProc來執行默認處理(如果它不處理消息)。
總結:應用程序的消息循環(或嵌套的模態消息循環)首先看到消息,並指示窗口管理器將消息傳遞給相應的接收者。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.