Rumah > pembangunan bahagian belakang > C++ > Bagaimana Saya Mengendalikan Mesej WndProc dalam WPF?

Bagaimana Saya Mengendalikan Mesej WndProc dalam WPF?

DDD
Lepaskan: 2025-01-22 23:08:10
asal
120 orang telah melayarinya

How Do I Handle WndProc Messages in WPF?

Mengendalikan mesej WndProc dalam WPF

Dalam Windows Forms, pengendalian mesej WndProc ialah proses yang mudah. Dalam WPF, bagaimanapun, pendekatannya sedikit berbeza.

Gunakan kelas HwndSource

WPF menyediakan ruang nama System.Windows.Interop, yang mengandungi kelas HwndSource. Kelas ini membenarkan pemintasan dan pemprosesan mesej WndProc.

Contoh pelaksanaan

Coretan kod berikut memberikan contoh penggunaan kelas HwndSource untuk mengendalikan mesej WndProc dalam 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>
Salin selepas log masuk

Dalam contoh ini:

  • Kaedah WndProc dalam kelas Window1 ditindih untuk mengendalikan mesej masuk.
  • Acara OnSourceInitialized digunakan untuk memasang cangkuk WndProc pada HwndSource yang dikaitkan dengan tetingkap.

Maklumat lanjut

Untuk penerangan yang lebih terperinci tentang teknik ini, lihat catatan blog Steve Rands yang sangat baik tentang menggunakan WndProc tersuai dalam aplikasi WPF.

Atas ialah kandungan terperinci Bagaimana Saya Mengendalikan Mesej WndProc dalam WPF?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan