Microsoft Docs

问题描述 投票:-2回答:2
Message Maps (MFC)

  1. 我有两个类的层次结构,如下图所示。
    • Class A extends CWnd
    • B扩展了A
  2. C类扩展了B。
    • D类扩展了CWnd

E扩展到DSendMessage我怎么能 CD

?

补充信息(来自评论)。

  1. Message Mapping is done correctly and message is registered. 消息映射正确,消息已注册。下面是我的尝试。SendMessage(...)我调用

  2. 的成员函数中,但这是行不通的。GetTopLevelParent()->SendMessage(...)当我用

它是工作的。但在 第二例,它击中了监听器的功能。3次

. 你能解释一下原因吗?
c++ mfc sendmessage
2个回答
0
投票

我有两个类的层次结构,如下图所示。A类扩展CWnd B类扩展A C类扩展B D类扩展CWnd E类扩展D 如何才能把C的SendMessage发送到D?其他信息(来自...C由于这两个类。DCWnd 源于 SendMessage的信息,两者都应该能够接收通过 . 在我看来,很有可能是你在实现以下功能时遗漏了什么 接收器部分D

. CWnd确实你这不是两个层次结构。因为共同的根类是 ,它是 一个 等级制度

  • :
    • CWnd(共同根类)
      • A(扩展CWnd)
        • B(延伸至A)
    • C(延伸B)
      • D(扩展CWnd)

E(延伸至D)你必须添加一个 用户自定义处理程序D 的信息图。

BEGIN_MESSAGE_MAP(CMyDoc, CDocument)
   ON_MESSAGE( <message>, <memberFxn> )
   // ...
END_MESSAGE_MAP()

.

© www.soinside.com 2019 - 2024. All rights reserved.