我有一个 MFC GUI 应用程序,它有多个框架(有点像主窗口的 Outlook'ish 行为,以及在新框架中创建的消息/约会窗口,或者像多帧同步的 Skype),我需要 PostMessage malloc'ed 数据通过窗口层次结构。
比如说,我得到了字符串,_wcsdup 它,PostMessage(WM_NEWSTRING, ...),然后,层次结构深处的某个地方的控件处理它,或者如果没有订阅者,则清除消息。
我现在正在研究的是,所有消息都发布到应用程序线程,线程找到活动框架或最适合的框架,将消息传递给它,框架将消息传递给它的视图,视图将消息传递给子视图等等,如果没有视图来处理消息,它会被释放。
问题是这些链接命令写起来很累,因为我必须在我拥有的每个 CWnd 类中复制消息转发代码。同时,资源清理也很不愉快,因为如果没有窗口可以捕获消息,就必须有人调用 free。因此,简单地将消息发布到主消息泵而不进行额外处理,希望有人总是能抓住它,这不是一种有效的方法。PostMessage 返回 S_OK,没有人认为该消息是可处理的,因此它处于悬空状态。
对于我正在寻找的东西,是否有更好、更正确的方法?