Csharp/C Sharp by API/System.Windows.Forms/NativeWindow
Subclass NativeWindow
<source lang="csharp"> using System; using System.Drawing; using System.Windows.Forms;
class CaptureLoss: Form {
public static void Main() { Application.Run(new CaptureLoss()); } public CaptureLoss() { Text = "Capture Loss"; CaptureLossWindow win = new CaptureLossWindow(); win.form = this; win.AssignHandle(Handle); } protected override void OnMouseDown(MouseEventArgs mea) { Invalidate(); } public void OnLostCapture() { Invalidate(); } protected override void OnPaint(PaintEventArgs pea) { Graphics grfx = pea.Graphics; if (Capture) grfx.FillRectangle(Brushes.Red, ClientRectangle); else grfx.FillRectangle(Brushes.Gray, ClientRectangle); }
}
class CaptureLossWindow : NativeWindow {
public CaptureLoss form; protected override void WndProc(ref Message message) { if (message.Msg == 533) // WM_CAPTURECHANGED form.OnLostCapture(); base.WndProc(ref message); }
}
</source>