Csharp/C Sharp by API/System.Windows.Forms/NativeWindow

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

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>