我正在使用 MFC 和 C++ 并且不确定如何正确解耦需要相互交互的两个顶级对话框。具体来说,其中一个对话框(比如对话框 X)应该执行一个动作来响应按钮点击另一个对话框(比如对话框 Y)。当前在代码库中实现这一点的方式是 Y 的构造函数将指向 X 的指针作为参数。然后,当单击其自己的按钮时,它使用此指针对 X 执行操作。这似乎是对通用对话框的不合理限制。我希望能够做的是让 X 为来自 Y 的按钮单击消息注册某种侦听器。不幸的是,我还没有找到任何表明这是可能的东西。
我考虑过的两种选择:
- 注册自定义消息并将其从 Y 发送到 X(高度耦合...)
- 广播一条消息并在 X 中收听(似乎过度)
我对 MFC 比较陌生,对 MFC 社区的习语或最佳实践不是特别熟悉。对于如何正确解耦对话框的任何想法或建议,我将不胜感激。