Freigeben über


Über Carets

Das System stellt ein Caret pro Nachrichtenwarteschlange bereit. Ein Fenster sollte nur dann ein Caret erstellen, wenn es den Tastaturfokus hat oder aktiv ist. Das Fenster sollte das Caretzeichen zerstören, bevor der Tastaturfokus verloren geht oder inaktiv wird. Weitere Informationen zur Tastatureingabe finden Sie unter Tastatureingabe.

Verwenden Sie die CreateCaret-Funktion , um die Parameter für ein Caretzeichen anzugeben. Das System bildet einen Caret, indem es die Pixelfarbe innerhalb des Rechtecks umkehrt, das durch Position, Breite und Höhe des Carets angegeben wird. Breite und Höhe werden in logischen Einheiten angegeben; Daher unterliegt das Aussehen eines Carets dem Zuordnungsmodus des Fensters.

Die folgenden Themen werden in diesem Abschnitt behandelt.

Caret-Sichtbarkeit

Nachdem das Caret definiert wurde, verwenden Sie die ShowCaret-Funktion , um das Caret sichtbar zu machen. Wenn das Caret angezeigt wird, beginnt es automatisch zu blinken. Um ein durchgezogenes Caretzeichen anzuzeigen, invertiert das System jedes Pixel im Rechteck. um ein graues Caretzeichen anzuzeigen, invertiert das System jedes andere Pixel; um ein Bitmap-Caretzeichen anzuzeigen, invertiert das System nur die weißen Bits der Bitmap.

Die verstrichene Zeit in Millisekunden, die zum Umkehren des Carets erforderlich ist, wird als Blinkzeit bezeichnet. Das Caret blinkt, solange der Thread, der die Nachrichtenwarteschlange besitzt, über eine Nachrichtenpumpe verfügt, die die Nachrichten verarbeitet.

Der Benutzer kann die Blinzelzeit des Carets mithilfe der Systemsteuerung festlegen, und Anwendungen sollten die Einstellungen berücksichtigen, die der Benutzer gewählt hat. Eine Anwendung kann die Blinkzeit des Carets mithilfe der GetCaretBlinkTime-Funktion ermitteln. Wenn Sie eine Anwendung schreiben, die es dem Benutzer ermöglicht, die Blinkzeit anzupassen, z. B. ein Systemsteuerung Applet, verwenden Sie die SetCaretBlinkTime-Funktion, um die Rate der Blinkzeit auf eine angegebene Anzahl von Millisekunden festzulegen.

Die Blitzzeit ist die verstrichene Zeit in Millisekunden, die zum Anzeigen, Invertieren und Wiederherstellen der Anzeige des Carets erforderlich ist. Die Blitzzeit eines Carets ist doppelt so viel wie die Blinkzeit.

Caretposition

Sie können die Position des Carets mithilfe der GetCaretPos-Funktion bestimmen. Die Position in Clientkoordinaten wird in eine Struktur kopiert, die durch einen Parameter in GetCaretPos angegeben wird. Eine Anwendung kann ein Caretzeichen in einem Fenster mithilfe der SetCaretPos-Funktion verschieben. Ein Fenster kann ein Caret nur verschieben, wenn es bereits im Besitz des Caretzeichens ist. SetCaretPos kann das Caretzeichen verschieben, unabhängig davon, ob es sichtbar ist oder nicht.

Entfernen eines Caret-Strichs

Sie können ein Caretzeichen vorübergehend entfernen, indem Sie es ausblenden, oder Sie können das Caretzeichen dauerhaft entfernen, indem Sie es zerstören. Verwenden Sie die Funktion HideCaret, um das Caret-Element auszublenden . Dies ist nützlich, wenn Ihre Anwendung den Bildschirm während der Verarbeitung einer Nachricht neu zeichnen muss, aber das Caret aus dem Weg halten muss. Wenn die Anwendung das Zeichnen abgeschlossen hat, kann das Caret mithilfe der ShowCaret-Funktion erneut angezeigt werden. Durch das Ausblenden des Carets wird die Form nicht zerstört oder die Einfügemarke ungültig. Das Ausblenden des Carets ist kumulativ; Das heißt, wenn die Anwendung HideCaret fünfMal aufruft , muss sie auch ShowCaret fünfMal aufrufen, bevor das Caret wieder angezeigt wird.

Verwenden Sie die Funktion DestroyCaret , um das Caretzeichen vom Bildschirm zu entfernen und seine Form zu zerstören. DestroyCaret zerstört das Caret nur, wenn das Fenster, das an der aktuellen Aufgabe beteiligt ist, das Caret besitzt.