【问题标题】:In MFC, do inactive windows receive PreTranslateMessage events?在 MFC 中,非活动窗口是否接收 PreTranslateMessage 事件?
【发布时间】:2015-04-29 20:08:30
【问题描述】:

我注意到一种行为,并想确认没有简单的方法可以解决它。假设我有一个主 CFrameWnd,它包含几个 CView,通常嵌套几个层次。假设他们每个人都覆盖PreTranslateMessage(MSG* pMsg)(不要开枪,我继承了这个代码:P)。问题是:所有的 CViews / CFrameWnd / 等都会收到通知到他们的PreTranslateMessage(MSG* pMsg),还是由第一个处理它的PreTranslateMessage(MSG* pMsg) 消费的消息?

根据我的观察,似乎只有一个PreTranslateMessage(MSG* pMsg) 被触发,但我想确认一下。

【问题讨论】:

    标签: visual-studio-2008 mfc


    【解决方案1】:

    如果发布到 Windows 消息队列的消息用于该视图或该视图的子窗口,则非活动视图将收到 PreTranslateMessage 调用。

    如果消息不满足上述条件,则非活动视图不会处理 PreTranslateMessages。

    有 PreTranslateMessage 和菜单、工具栏、功能区等的 OnCmdMsg 路由。在这种情况下,非活动视图默认不会处理它们,除非应用程序框架窗口已覆盖 OnCmdMsg 并决定遍历所有子级意见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      • 2015-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多