Maison >développement back-end >C++ >Comment gérer les messages WndProc dans WPF ?

Comment gérer les messages WndProc dans WPF ?

DDD
DDDoriginal
2025-01-22 23:08:10168parcourir

How Do I Handle WndProc Messages in WPF?

Gestion des messages WndProc dans WPF

Dans Windows Forms, la gestion des messages WndProc est un processus simple. Dans WPF, cependant, l’approche est légèrement différente.

Utiliser la classe HwndSource

WPF fournit l'espace de noms System.Windows.Interop, qui contient la classe HwndSource. Cette classe permet l'interception et le traitement des messages WndProc.

Exemple de mise en œuvre

L'extrait de code suivant fournit un exemple d'utilisation de la classe HwndSource pour gérer les messages WndProc dans 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>

Dans cet exemple :

  • La méthode WndProc de la classe Window1 est remplacée pour gérer les messages entrants.
  • L'événement OnSourceInitialized est utilisé pour attacher le hook WndProc au HwndSource associé à la fenêtre.

Plus d'informations

Pour une explication plus détaillée de cette technique, consultez l'excellent article de blog de Steve Rands sur l'utilisation de WndProc personnalisé dans les applications WPF.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn