Blinkende Controls mit API-Caret-Funktionen

    • Allgemein

      Blinkende Controls mit API-Caret-Funktionen

      Hallo Leute,
      ich hab da in einem fremden Projekt eine interessante Funktionalität kennengelernt, die es gestattet, Controls oder Teile davon blinken zu lassen.
      Die Funktionalität ist seitens Windows so ausgelegt, dass es nur ein Control pro Betriebssystem-Instanz blinkt, das, welches aktiv ist bzw. den Fokus hat.
      Die einzelnen Funktionen sind hier erläutert: msdn.microsoft.com/en-us/libra…op/ff468799(v=vs.85).aspx

      C#-Quellcode

      1. MainForm.CreateCaret(this.pictureBox1.Handle, this.bmp.GetHbitmap(), this.pictureBox1.Width, this.pictureBox1.Height);
      2. MainForm.SetCaretPos(40, 0);
      3. MainForm.ShowCaret(this.pictureBox1.Handle);
      Dies erzeugt ein blinkendes Bild.
      DestroyCaret() zerstört, so existiert, ein "fremdes" Caret.
      CreateCaret(...) erzeugt ein Caret zum übergebenen Control, hier eine PictureBox, in der ein blinkendes Bild dargestellt wird.
      SetCaretPos(...) legt die Koordinate des blinkenden Bereichs fest.
      ShowCaret(...) startet das Blinken.
      Daraus hab ich folgendes Testprojekt gebaut:
      Caret.zip

      Zu beachten ist, dass in der PictureBox das gezoomte Bild angezeigt wird, das blinkende Caret jedoch der Originalgröße der Bitmap entspricht.
      Ein LostFokus (Fokus auf eine andere Anwendung gesetzt) bewirkt ebenfalls eine Zerstörung des Carets.
      Viel Spaß
      Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
      Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
      Ein guter .NET-Snippetkonverter (der ist verfügbar).
      Programmierfragen über PN / Konversation werden ignoriert!