Microsoft 有一篇知识库文章描述了如何修改 ATL .exe 中的消息循环,以便无模式对话框可以接收适当的消息。
如果您可能有多个无模式对话框,并且您不知道在任何给定时间可能存在哪些对话框,我想知道如何优雅地做到这一点。就像 .exe 可能托管几个不同的 COM 类一样,每个类都有不同的对话框,谁知道可能会实例化哪一个。
您是否会创建一个全局 hwnd 集,并让每个对话框类在创建时将其 hwnd 放在集合中,然后让消息循环遍历集合调用IsDialogMessage
(and TranslateAccelerator
)?