Umgang mit WndProc-Nachrichten in WPF: Erkundung alternativer Techniken
In Windows Forms stellt das Überschreiben von WndProc einen direkten Nachrichtenverarbeitungspfad bereit. Die Konvertierung dieser Funktionalität in WPF erfordert einen anderen Ansatz.
System.Windows.Interop-Namespace
WPF führt den System.Windows.Interop-Namespace ein, der die HwndSource-Klasse enthält. Diese Klasse ermöglicht die Interaktion mit nativen Windows-Nachrichten.
Beispielimplementierung
Erstellen Sie eine WPF-Anwendung und verwenden Sie HwndSource, um die benutzerdefinierte Nachrichtenverarbeitung zu implementieren:
<code class="language-csharp">using System; using System.Windows; using System.Windows.Interop; namespace WpfApplication1 { public partial class Window1 : Window { 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>
Ressourcen-Danksagungen
Dieses Beispiel ist inspiriert von Steve Rands‘ Blog-Beitrag: „Using a custom WndProc in a WPF application“.
Das obige ist der detaillierte Inhalt vonWie kann ich native Windows-Nachrichten in WPF verarbeiten, ohne WndProc zu überschreiben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!