一尘不染

如何在WPF中处理WndProc消息?

c#

在Windows窗体中,我将重写WndProc,并开始处理传入的消息。

有人可以向我展示如何在WPF中实现相同目标的示例吗?


阅读 688

收藏
2020-05-19

共1个答案

一尘不染

实际上,据我了解,在WPF中使用HwndSource和确实可以做到这一点HwndSourceHook。请参见MSDN上的该线程作为示例。(以下包含相关代码)

// 'this' is a Window
HwndSource source = HwndSource.FromHwnd(new WindowInteropHelper(this).Handle);
source.AddHook(new HwndSourceHook(WndProc));

private static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
    //  do stuff

    return IntPtr.Zero;
}

现在,我不太确定为什么要在WPF应用程序中处理Windows
Messaging消息(除非这是与另一个WinForms应用程序一起使用的最明显的互操作形式)。WPF与WinForms在WPF中的设计思想和API的性质有很大的不同,因此我建议您进一步熟悉WPF,以了解
为什么 没有WndProc。

2020-05-19