MFC中inactivewindows是否接收PreTranslateMessage事件?
In MFC, do inactive windows receive PreTranslateMessage events?
我注意到了一种行为,想确认没有简单的解决方法。假设我有一个主 CFrameWnd,它包含几个 CView,通常嵌套了好几层。假设它们中的每一个都覆盖了 PreTranslateMessage(MSG* pMsg)
(别开枪,我继承了这段代码 :P )。问题是:所有 CViews / CFrameWnd / etc 都会收到通知到他们的 PreTranslateMessage(MSG* pMsg)
,还是第一个处理它的 PreTranslateMessage(MSG* pMsg)
消耗的消息?
根据我的观察,似乎只有一个 PreTranslateMessage(MSG* pMsg)
被触发,但我想确认一下。
如果发布到 Windows 消息队列的消息是针对该视图或该视图的子 window,则非活动视图将收到 PreTranslateMessage 调用。
如果消息不满足上述条件,则非活动视图将不会处理 PreTranslateMessages。
有 PreTranslateMessage 和菜单、工具栏、功能区等的 OnCmdMsg 路由。在这种情况下,非活动视图默认不会处理它们,除非应用程序框架 window 已覆盖 OnCmdMsg 并决定遍历所有子视图。
我注意到了一种行为,想确认没有简单的解决方法。假设我有一个主 CFrameWnd,它包含几个 CView,通常嵌套了好几层。假设它们中的每一个都覆盖了 PreTranslateMessage(MSG* pMsg)
(别开枪,我继承了这段代码 :P )。问题是:所有 CViews / CFrameWnd / etc 都会收到通知到他们的 PreTranslateMessage(MSG* pMsg)
,还是第一个处理它的 PreTranslateMessage(MSG* pMsg)
消耗的消息?
根据我的观察,似乎只有一个 PreTranslateMessage(MSG* pMsg)
被触发,但我想确认一下。
如果发布到 Windows 消息队列的消息是针对该视图或该视图的子 window,则非活动视图将收到 PreTranslateMessage 调用。
如果消息不满足上述条件,则非活动视图将不会处理 PreTranslateMessages。
有 PreTranslateMessage 和菜单、工具栏、功能区等的 OnCmdMsg 路由。在这种情况下,非活动视图默认不会处理它们,除非应用程序框架 window 已覆盖 OnCmdMsg 并决定遍历所有子视图。