#region Imports
|
|
using System;
|
using System.Security;
|
using System.Windows.Forms;
|
|
#endregion
|
|
namespace DPumpHydr.WinFrmUI.RLT.Native
|
{
|
#region SubClassNative
|
|
[SuppressUnmanagedCodeSecurity]
|
internal class SubClass : NativeWindow
|
{
|
public delegate int SubClassWndProcEventHandler(ref Message m);
|
public event SubClassWndProcEventHandler SubClassedWndProc;
|
|
public SubClass(IntPtr Handle, bool _SubClass)
|
{
|
base.AssignHandle(Handle);
|
SubClassed = _SubClass;
|
}
|
|
public bool SubClassed { get; set; } = false;
|
|
protected override void WndProc(ref Message m)
|
{
|
if (SubClassed)
|
{
|
if (OnSubClassedWndProc(ref m) != 0)
|
{
|
return;
|
}
|
}
|
base.WndProc(ref m);
|
}
|
|
public void CallDefaultWndProc(ref Message m)
|
{
|
base.WndProc(ref m);
|
}
|
|
#region HiWord Message Cracker
|
|
public static int HiWord(int Number)
|
{
|
return (Number >> 16) & 0xffff;
|
}
|
|
#endregion
|
|
#region LoWord Message Cracker
|
|
public static int LoWord(int Number)
|
{
|
return Number & 0xffff;
|
}
|
|
#endregion
|
|
#region MakeLong Message Cracker
|
|
public static int MakeLong(int LoWord, int HiWord)
|
{
|
return (HiWord << 16) | (LoWord & 0xffff);
|
}
|
|
#endregion
|
|
#region MakeLParam Message Cracker
|
|
public static IntPtr MakeLParam(int LoWord, int HiWord)
|
{
|
return (IntPtr)((HiWord << 16) | (LoWord & 0xffff));
|
}
|
|
#endregion
|
|
private int OnSubClassedWndProc(ref Message m)
|
{
|
if (SubClassedWndProc != null)
|
{
|
return SubClassedWndProc(ref m);
|
}
|
|
return 0;
|
}
|
}
|
|
#endregion
|
}
|