gpt4 book ai didi

c++ - 在纯 C++ dll 中捕获由 MFC 应用程序生成的 Windows 消息

转载 作者:可可西里 更新时间:2023-11-01 13:29:29 25 4
gpt4 key购买 nike

首先:这可能吗?

我有一个连接某些硬件的第三方 dll。它是用 MFC 编写的。我(从 dll 供应商那里)收到了一个示例 Visual Studio 2010 解决方案,它只有一个项目:一个调用相关第三方 dll 的 MFC 应用程序 (.exe)。它工作正常。

当我尝试使用我的 dll 中的第三方 dll(纯 C++,没有 MFC,没有 .NET)时,我可以很好地调用它的函数,但有一个问题:示例 MFC 应用程序似乎“覆盖” MessageProc 用于捕获第三方 dll 生成的某些消息。尽管 dll 有一个名为“RegisterFuncCallback”的函数并且我使用它,但我的回调从未被调用。

问题来了:如何在不创建 MFC 应用程序的情况下捕获这些消息? (甚至可能吗?)

最佳答案

好的,我做到了。方法如下:

  1. 创建一个继承自CWnd的类
  2. 声明一个将所需消息及其处理程序关联起来的消息映射
  3. 在创建窗口时,使用 CreateEx 函数(我在类的构造函数中使用它),并在最后一个参数中将 HWND_MESSAGE 标志传递给它。这会将窗口创建为“消息窗口”,即不可见。
  4. 一旦我完成窗口和 MFC dll 的初始化,我就在我的隐藏窗口上调用 RunModalLoop,在一个单独的线程中,因为它是阻塞的。这会启动消息泵,并开始接收 MFC dll 的消息。

编辑:我终于可以只使用 Win32 API 来完成它。这是我的故事,包括代码: Programate Algo Blog .别担心,它是英文的。

关于c++ - 在纯 C++ dll 中捕获由 MFC 应用程序生成的 Windows 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6022087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com