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

首先:这是可能的吗?

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

当我尝试从我的DLL(这是简单的C ++,没有MFC,没有.NET)使用第三方DLL,我可以调用它的function很好,但有一个catch:示例MFC应用程序似乎“重写”按顺序MessageProc捕获第三方dll生成的某些消息。 虽然DLL有一个名为“RegisterFuncCallback”的函数,我使用它,我的callback永远不会被调用。

所以这里的问题是:如何在不创buildMFC应用程序的情况下捕获这些消息? (这甚至有可能吗?)

Solutions Collecting From Web of "捕获MFC应用程序在纯C ++ dll中生成的Windows消息"

好吧,我做到了。 就是这样:

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

编辑 :我终于可以使用Win32 API。 这是我的故事,代码包括: Programate Algo博客 。 别担心,这是英文。

如果DLL与Win32消息一起使用,则不会绕过它们。 但是你并不需要MFC,一个简单的WinAPI解决方案就足够了。 MFC只是包装Win32 API。 如果这些消息不是Win32消息,则不需要Win32应用程序。