読者です 読者をやめる 読者になる 読者になる

亀岡的プログラマ日記

京都のベッドタウン、亀岡よりだらだらとお送りいたします。

WPF/SilverlightでWndProcをフックする

WPF

Every now and then, you'll find a windows message that has no WPF equivalent.? HwndSource lets you use a WndProc to get window messages; what you may not know is that you can still use the Window class.

どう考えてもWndProcオーバーライドでしかできない仕様が決まりそうなので、先どって勉強しておく。
上記サイトによると。。

void Window1_Loaded(object sender, RoutedEventArgs e)
        {
            HwndSource source = HwndSource.FromHwnd(new WindowInteropHelper(this).Handle);
            source.AddHook(new HwndSourceHook(WndProc));
        }
 
        private static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
        {
            // Handle whatever Win32 message it is we feel like handling
            
        }

この書き方はWindowsFormより好きかもしれない。必ずしもオーバーライド必要ないし!
(NativeWindowのようなもんかね。)