【发布时间】:2012-09-25 12:00:31
【问题描述】:
我正在使用 MFC MDI。我创建了一个窗口主文档窗口。我创建另一个窗口(我们称之为第二个窗口)作为 MDI 窗口视图的子窗口,然后创建第二个窗口的子窗口(第三个窗口)。我再次需要创建另一个窗口,第三个窗口的子窗口。我在功能区上有一个按钮,我想在第三个窗口中调用消息处理程序来处理这个命令。我添加了消息映射和所有必需的东西,但它没有调用消息处理程序。如果我在 MDI 窗口视图中定义消息处理程序,它会捕获事件。如果我不在我的主 CWinApp 类或 MDI 窗口视图类中取消消息处理程序,则该按钮将显示为禁用。
我所有的子视图类都是从 CWnd 继承的,主 MDI 窗口是从 CView 派生的。请让我知道我在这里缺少什么。
萨巴
【问题讨论】:
-
父子关系和焦点都工作正常,但事件没有路由到子窗口
-
我猜您可能需要自己转发消息。我经历过类似的事情,IIRC 框架转发到它的窗口,但是除非您自己转发消息,否则您打开的任何其他窗口(这些额外的子窗口)可能不会得到任何东西。
-
感谢 Nerdtron,我认为你是对的,我还尝试了更多的东西,但没有任何效果。基本上,功能区将其发送到主框架,而主框架将其提供给 View 或 App。我没有在 mfc 代码中找到任何与窗口相关的焦点搜索。
标签: mfc