Heim > Backend-Entwicklung > C++ > Wie gehe ich mit WndProc-Nachrichten in WPF um?

Wie gehe ich mit WndProc-Nachrichten in WPF um?

DDD
Freigeben: 2025-01-22 23:08:10
Original
166 Leute haben es durchsucht

How Do I Handle WndProc Messages in WPF?

Verarbeitung von WndProc-Nachrichten in WPF

In Windows Forms ist die Verarbeitung von WndProc-Nachrichten ein einfacher Vorgang. In WPF ist der Ansatz jedoch etwas anders.

HwndSource-Klasse verwenden

WPF stellt den System.Windows.Interop-Namespace bereit, der die HwndSource-Klasse enthält. Diese Klasse ermöglicht das Abfangen und Verarbeiten von WndProc-Nachrichten.

Beispielimplementierung

Der folgende Codeausschnitt bietet ein Beispiel für die Verwendung der HwndSource-Klasse zur Verarbeitung von WndProc-Nachrichten in WPF:

<code class="language-c#">using System;
using System.Windows;
using System.Windows.Interop;

namespace WpfApplication1
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }

        protected override void OnSourceInitialized(EventArgs e)
        {
            base.OnSourceInitialized(e);
            HwndSource source = PresentationSource.FromVisual(this) as HwndSource;
            source.AddHook(WndProc);
        }

        private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
        {
            // 在此处处理消息...

            return IntPtr.Zero;
        }
    }
}</code>
Nach dem Login kopieren

In diesem Beispiel:

  • Die WndProc-Methode in der Klasse Window1 wird überschrieben, um eingehende Nachrichten zu verarbeiten.
  • Das OnSourceInitialized-Ereignis wird verwendet, um den WndProc-Hook an die mit dem Fenster verknüpfte HwndSource anzuhängen.

Weitere Informationen

Eine ausführlichere Erklärung dieser Technik finden Sie im hervorragenden Blogbeitrag von Steve Rands über die Verwendung von benutzerdefiniertem WndProc in WPF-Anwendungen.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit WndProc-Nachrichten in WPF um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage