我有一個MFC GUI應用程序,它具有多個框架(有點像Outlook主窗口的行爲,消息/預約窗口是在新框架中創建的,幀同步),我需要通過窗口層次結構PostMessage malloc'ed數據。我得到字符串,_wcsdup,PostMessage(WM_NEWSTRING,...),以及層次結構深處的控制處理它,或者如果沒有訂閱者,則會清除消息。如何在WinApi/MFC中設計更清潔的PostMessage鏈
我現在正在研究的是,所有消息都發布到應用程序線程,線程發現活動幀或最適合幀,將消息傳遞給它,幀將消息傳遞給它的視圖,視圖將消息傳遞給子視圖等等,如果沒有處理消息的視圖,它就會被釋放。
問題是,這些鏈接命令非常累人寫,因爲我必須在每個CWnd類中複製消息轉發代碼。與此同時,資源清理是非常不愉快的,因爲如果沒有窗口可以捕捉到這個信息,那麼有人必須打電話給免費的人。因此,只需將消息發佈到主消息泵而無需額外處理,希望有人總能抓住它,這不是一種有效的方法。 PostMessage返回S_OK,沒有人看到該消息是可處理的,並且它留下了懸掛。
對於我在找什麼,有沒有更好的正確方法?
沒有理由不僅僅使用SendMessage,而是解決內存管理問題。很難理解你爲什麼不只是使用方法調用。 – 2010-11-15 16:11:01
多線程... SendMessage是有效的序列化+上下文切換。 – Coder 2010-11-16 08:49:15
如果你對使用這種方法已經失望了,爲什麼不把消息接收器添加到消息傳遞鏈的最後,以便清除任何使之成爲現實的消息? – Jon 2011-03-31 16:36:49