Home > Blog > Sub Classing a WPF Application’s WndProc
Sub Classing a WPF Application’s WndProc
nov 12, 2013 | 42Gears Team
Applies to:
Product
General
Platform
Windows
With the introduction of Windows Presentation Foundation (WPF), developers can now create rich User Interface applications which is preferred by end users. While developing such applications, sometimes there can be a need to intercept the Window messages. This can be achieved easily in Win32 and WinForm applications and one would wonder is this possible in WPF as well? The answer to this question is, yes it is possible. This article does exactly that and will explain how to Sub class a WPF application’s WndProc.
.Net Classes Used
WindowInteropHelper : This class is needed to retrieve the handle of the WPF application window.
HwndSource : The class will provide a method to hook the WndProc of the WPF application.
private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam,ref bool handled)
{
if(msg==WM_CLOSE)
{
//Avoiding a close event
handled=true;
}
return IntPtr.Zero;
}
In the above Snippet, the WindowInteropHelper class provides the handle to the WPF application window which is passed to the HwndSource class and the AddHook method allows to intercept the Window messages using a WndProc, which is WM_CLOSE in this case
NOTE: The HwndSource object should be created only in the Loaded event of your application because that’s when your WPF application is assigned a Window handle, else the WindowInteropHelper class will return an invalid handle.
Exclusive News and Updates on Enterprise Mobility!
* I consent to receive newsletters via email from 42Gears and its Affiliates.
Please agree
* I have reviewed and agreed to 42Gears Privacy Policy and Terms of Use prior to subscribing and understand that I may change my preference or unsubscribe at any time.