首先:这可能吗?
我有一个与某些硬件接口的第三方 dll。它是用MFC编写的。我(从 dll 供应商处)收到了一个示例 Visual Studio 2010 解决方案,该解决方案只有一个项目:调用相关第三方 dll 的 MFC 应用程序 (.exe)。效果很好。
当我尝试使用我的 dll 中的第三方 dll(纯 C++,无 MFC,无 .NET)时,我可以很好地调用其函数,但有一个问题:示例 MFC 应用程序似乎按顺序“覆盖”MessageProc捕获第三方 dll 生成的某些消息。尽管 dll 有一个名为“RegisterFuncCallback”的函数并且我使用了它,但我的回调永远不会被调用。
那么问题来了:如何在不创建 MFC 应用程序的情况下捕获这些消息? (这可能吗?)
好吧,我做到了。就是这样:
- 创建一个继承自CWnd的类
- 声明一个关联所需消息及其处理程序的消息映射
- 创建窗口时,使用 CreateEx 函数(我在类的构造函数中执行此操作),并在最后一个参数中向其传递 HWND_MESSAGE 标志。这会将窗口创建为“消息窗口”,即不可见。
- 完成窗口和 MFC dll 的初始化后,我会在单独的线程中对隐藏窗口调用 RunModalLoop,因为它处于阻塞状态。这将启动消息泵,并开始接收 MFC dll 的消息。
Edit:我终于可以只使用 Win32 API 来做到这一点。这是我的故事,包括代码:编程算法博客 http://programatealgo.blogspot.com/2011/05/c-capture-windows-messages-from-mfc-app.html。别担心,它是英文的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)