>백엔드 개발 >C++ >WndProc를 재정의하지 않고 WPF에서 기본 Windows 메시지를 처리하려면 어떻게 해야 합니까?

WndProc를 재정의하지 않고 WPF에서 기본 Windows 메시지를 처리하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-22 22:41:11210검색

How Can I Handle Native Windows Messages in WPF Without Overriding WndProc?

WPF에서 WndProc 메시지 처리: 대체 기술 탐색

Windows Forms에서 WndProc를 재정의하면 직접 메시지 처리 경로가 제공됩니다. 이 기능을 WPF로 변환하려면 다른 접근 방식이 필요합니다.

System.Windows.Interop 네임스페이스

WPF에는 HwndSource 클래스가 포함된 System.Windows.Interop 네임스페이스가 도입되었습니다. 이 클래스를 사용하면 기본 Windows 메시지와의 상호 작용이 가능합니다.

구현예

WPF 애플리케이션을 만들고 HwndSource를 사용하여 사용자 정의 메시지 처리를 구현합니다.

<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>

리소스 승인

이 예는 Steve Rands의 블로그 게시물 "WPF 애플리케이션에서 사용자 정의 WndProc 사용"에서 영감을 받았습니다.

위 내용은 WndProc를 재정의하지 않고 WPF에서 기본 Windows 메시지를 처리하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.