用于托管 MFC 窗口的 C# 中的 PreTranslateMessage

发布于 2025-01-04 04:59:43 字数 514 浏览 4 评论 0原文

我们开发了一个 MFC 应用程序,其中主窗口是在 DLL 中实现的。为了尝试对其进行改进,我们正在考虑将其更改为 WPF 应用程序,其中“旧”本机窗口将重新托管在 Wpf 窗口中。到目前为止,一切都很好。

但是,我们旧的 MFC 应用程序在应用程序级别捕获了一些消息(例如:阻止鼠标单击或键盘输入)。要在 WPF 应用程序中重新托管 MFC 窗口,我们需要一种方法来从 WPF 应用程序捕获这些内容,并要求旧的 MFC 窗口预先翻译它们...

这可能吗?

我正在考虑将 MFC 窗口重新托管在 HwndHost 中,然后添加消息挂钩。我的桥接 CLR-DLL 中的代码如下所示(并且没有实现我想要的):

MyHwndHost ^handle = gcnew MyHwndHost(pContentWnd);
handle->MessageHook += gcnew HwndSourceHook(&CVSimCoreNat::ControlMsgFilter);

任何人都可以帮忙吗?

We developped an MFC application where the main window was implemented in a DLL. In an attempt to revamp it, we are thinking of changing this to a WPF-application where the "old" native window gets rehosted in a Wpf-Window. So far so good.

However, our old MFC application trapped some messages at the application level (ex: preventing mouse-clicks or keyboard inputs). To rehost the MFC-window inside the WPF-application, we need a way to catch these from the WPF-application and ask the old MFC-window to pre-translate them...

Is this possible at all?

I was thinking of rehosting the MFC window in a HwndHost, then add a message hook. The code in my bridging CLR-DLL looks like this (and doesn't achieve what I want):

MyHwndHost ^handle = gcnew MyHwndHost(pContentWnd);
handle->MessageHook += gcnew HwndSourceHook(&CVSimCoreNat::ControlMsgFilter);

Can anyone help?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文