Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mfc 向用户定义的窗口类添加事件处理程序_Mfc - Fatal编程技术网

Mfc 向用户定义的窗口类添加事件处理程序

Mfc 向用户定义的窗口类添加事件处理程序,mfc,Mfc,我正在使用MFC MDI。我在主文档窗口中创建了一个窗口。我创建另一个窗口(称之为第二个窗口)作为MDI窗口视图的子窗口,然后创建第二个窗口的子窗口(第三个窗口)。再次,我需要创建另一个窗口,第三个窗口的子窗口。我在功能区上有一个按钮,我想调用第三个窗口中的消息处理程序来处理这个命令。我已经添加了消息映射和所有必需的东西,但它没有调用消息处理程序。如果在MDI窗口视图中定义消息处理程序,它将捕获事件。如果我没有删除主CWinApp类或MDI窗口视图类中的消息处理程序,则该按钮将显示为禁用 我的所

我正在使用MFC MDI。我在主文档窗口中创建了一个窗口。我创建另一个窗口(称之为第二个窗口)作为MDI窗口视图的子窗口,然后创建第二个窗口的子窗口(第三个窗口)。再次,我需要创建另一个窗口,第三个窗口的子窗口。我在功能区上有一个按钮,我想调用第三个窗口中的消息处理程序来处理这个命令。我已经添加了消息映射和所有必需的东西,但它没有调用消息处理程序。如果在MDI窗口视图中定义消息处理程序,它将捕获事件。如果我没有删除主CWinApp类或MDI窗口视图类中的消息处理程序,则该按钮将显示为禁用

我的所有子视图类都是从CWnd继承的,主MDI窗口是从CView派生的。请让我知道我错过了什么


萨巴

我在这里不知所措。您正在使用MFC;为什么要使用事件?使用命令消息和命令消息处理程序代替事件。
使用MFC实现且运行良好的命令路由。

MFC不会将通过单击功能区按钮生成的消息路由到子窗口。如果我们想向MDI窗口的子窗口发送消息,我们需要自己完成。功能区按钮的消息传递到活动MDI窗口或CWinApp类。

父子关系和焦点都正常工作,但事件未路由到子窗口。我猜您可能需要自己转发消息。我也经历过类似的事情,IIRC框架转发到它的窗口,但是你打开的任何其他窗口(这些额外的子窗口)可能都不会得到任何东西,除非你自己转发消息。感谢Nerdtron,我认为你是对的,我也尝试了一些其他方法,但没有任何效果。基本上,功能区将其发送到主框架,主框架将其提供给查看或应用程序。我在mfc代码中找不到任何与聚焦窗口搜索相关的内容。对不起,我基本上是在多个平台上工作的,而且每个平台的关键字都不同。我正在使用消息和消息处理程序