TextInputPanel für Benutzer von PenInputPanel

Das Release von Windows Vista enthält ein neues Programmierbarkeitsobjekt für den Tablet PC-Eingabebereich, das eine neue Möglichkeit bietet, wie eine Anwendung den Eingabebereich verwenden und mit diesem interagieren kann. Zum ersten Mal können Anwendungsentwickler das In-Place Eingabebereichssymbol positionieren, um sich mit einem Textfeld zu positionieren, oder es in der Ecke einer Kundeneingabeoberfläche platzieren, um Zugriff auf einen alternativen Eingabemodus zu ermöglichen. Entwickler haben die gleiche Kontrolle über die Positionierung, sobald das Eingabebereichssymbol in den In-Place Eingabebereich erweitert wurde. Dadurch kann sichergestellt werden, dass sich der In-Place Eingabebereich nie mit wichtigen Elementen der Benutzeroberfläche im Layout einer Anwendung überschneidet, oder sogar die Benutzeroberfläche einer Anwendung neu zuflowen, um Platz für den In-Place Eingabebereich zu schaffen und ihn dann im reservierten Bereich zu platzieren. Das neue Programmierbarkeitsmodell bietet Unterstützung für mehr als nur die Positionierung. Entwickler können jedoch auch den Eingabebereich, den Korrekturmodus und viele andere Eigenschaften des Eingabebereichs anpassen, um die Texteingabeerfahrung in einer Anwendung anzupassen. Schließlich ist es möglich, dass eine Anwendung zum ersten Mal zusätzlich zum erkannten Text, der Texteinfügungen aus dem Eingabebereich zugeordnet ist, die Benutzereingaben empfängt. Dies ermöglicht neue Anwendungsszenarien, einschließlich Freihand in Änderungsnachverfolgungsprotokollen und ermöglicht Benutzern das Bearbeiten oder Anzeigen von Freihand in der Anwendung. Diese neuen Programmierbarkeitsfeatures sind das direkte Ergebnis des Feedbacks, das Microsoft zur Entwicklerstory des Eingabebereichs erhalten hat, und stellen den ersten Schritt in Richtung einer engeren Integration von Anwendungen und des Eingabebereichs dar.

Um dieses erweiterte Eingabebereich-Programmierbarkeitsmodell bereitzustellen, wird der vorhandene Mechanismus für die programmgesteuerte Interaktion mit dem Eingabebereich, dem PenInputPanel-Objekt, veraltet und durch das neue TextInputPanel-Objekt ersetzt. Zusätzlich zur Bereitstellung neuer Programmierbarkeitsfunktionen bietet das TextInputPanel-Objekt auch nahezu alle programmgesteuerten Funktionen des PenInputPanel-Objekts. Das TextInputPanel-Objekt ist sowohl in Windows Vista als auch im Windows Vista Software Developer Kit enthalten. Das TextInputPanel-Objekt ist nur mit dem Windows Vista-Eingabebereich kompatibel und kann nicht mit dem Windows XP Service Pack 2 oder einem älteren Eingabebereich verwendet werden. Anwendungen, die zuvor für die Verwendung des PenInputPanel-Objekts geschrieben wurden, funktionieren weiterhin mit dem Windows Vista-Eingabebereich. Beim Schreiben neuer Tablet-Anwendungen wird Entwicklern jedoch dringend empfohlen, das neue TextInputPanel-Objekt anstelle des veralteten PenInputPanel-Objekts zu verwenden.

Jede der Programmierbarkeitsoptionen des TextInputPanel-Objekts kann pro Textfeld angewendet werden. Dies wird erreicht, indem eine Instanz des TextInputPanel-Objekts mithilfe der AttachedEditWindow-Eigenschaft angefügt wird. Die -Eigenschaft sollte auf das Fensterhandle für das Textfeld festgelegt werden.

Hinweis

: Einige der unten beschriebenen Eigenschaften und Methoden gelten, wenn sich der Eingabebereich im interaktionsbasierten Modus befindet und nicht, wenn sich der Eingabebereich im unverankerten oder angedockten Interaktionsmodus befindet. Der interaktionsbasierte Modus ist das Verhalten des Eingabebereichs, bei dem das Platzieren des Fokus in einem bearbeitbaren Feld dazu führt, dass das Eingabebereichssymbol neben dem Feld angezeigt wird und das Tippen auf das Eingabebereichssymbol dazu führt, dass der Eingabebereich erweitert wird. Die Methoden und Eigenschaften, die nur angewendet werden, wenn sich der Eingabebereich im interaktionsbasierten Modus befindet, enthalten alle "InPlace" im Methoden- oder Eigenschaftsnamen.

Steuerelement des Eingabebereichssymbols und der Sichtbarkeit des Eingabebereichs

Der erste Aspekt des Eingabebereichs, den Anwendungsentwickler in Windows Vista besser steuern können, ist die Sichtbarkeit. Mit dem TextInputPanel-Objekt ist es möglich, die Sichtbarkeit des In-Place Eingabebereichs auf drei Arten zu steuern. Mit einer Kombination aus Eigenschaften und Methoden kann eine Anwendung bestimmen, ob der In-Place Eingabebereich angezeigt wird, wann der In-Place Eingabebereich angezeigt wird und ob er zuerst als Eingabebereichssymbol angezeigt oder sofort erweitert angezeigt wird. Indem diese Techniken zum Steuern der Sichtbarkeit mit den im nächsten Abschnitt beschriebenen Techniken zum Steuern der Positionierung kombiniert werden, können Anwendungsentwickler mithilfe des In-Place Eingabebereichs in einer Anwendung benutzerdefinierte Startpunkte und benutzerdefinierte Arbeitsabläufe erstellen.

Hinweis

Die in diesem Abschnitt erläuterten Eigenschaften und Methoden gelten nur, wenn sich der Eingabebereich im In-Place Interaktionsmodus befindet.

Zunächst und vor allem ist es möglich, zu verhindern, dass der In-Place Eingabebereich und das Eingabebereichssymbol angezeigt werden, indem Sie die InPlaceVisibleOnFocus-Eigenschaft auf FALSE festlegen. Wenn sie auf "true" festgelegt ist, wird sie auf die Standardeinstellung des Systems zurückgesetzt, die nach Möglichkeit angezeigt wird, sofern sie nicht vom Benutzer oder Gruppenrichtlinie deaktiviert wurde. Diese Option ist nützlich für Anwendungen, die benutzerdefinierte Texteingabelösungen als Alternative zum Eingabebereich enthalten.

Zweitens kann ein Entwickler durch Festlegen der DefaultInPlaceState-Eigenschaft angeben, in welchem zustandsind, wie durch die InPlaceState-Enumeration angegeben, der In-Place Eingabebereich in angezeigt wird, wenn der Fokus in einem Textfeld platziert wird. Der Systemstandard ist, dass der In-Place Eingabebereich im Mauszeigerzustand angezeigt wird, es sei denn, der Eingabebereich ist bereits im erweiterten Zustand sichtbar. In diesem Fall bleibt der Eingabebereich erweitert. Wenn Sie die DefaultInPlaceState-Eigenschaft auf InPlaceState _ Expanded festlegen, wird der In-Place Eingabebereich immer erweitert angezeigt, anstatt dass zuerst das Eingabebereichssymbol angezeigt wird und der Benutzer dann auf das Eingabebereichssymbol tippen muss, bevor der Eingabebereich erweitert wird. Die anderen beiden Optionen sind InPlaceState _ Auto. Dies ist das Standardverhalten des Systems und InPlaceState _ HoverTarget, wodurch immer das Eingabebereichssymbol angezeigt wird. Die Möglichkeit anzugeben, dass der In-Place Eingabebereich immer erweitert angezeigt wird, ist mit dem TextInputPanel-Objekt neu und kann nicht mit dem PenInputPanel-Objekt verwendet werden. Die folgende Abbildung zeigt das symbol In-Place Eingabebereich und den erweiterten Status des Bereichs.

Symbol für den eingabeseitigen Bereich und erweiterte Zustände

Zusätzlich zur Möglichkeit, den zustandsbe wordenen Zustand zu steuern, kann ein Entwickler den zustandsbe wordenen Zustand zu einem bestimmten Zeitpunkt durch Abrufen der CurrentInPlaceState-Eigenschaft bestimmen. CurrentInPlaceState ist gleich DefaultInPlaceState, wenn der Eingabebereich nicht sichtbar ist, es sei denn, defaultInPlaceState ist InPlaceState _ Auto. In diesem Fall wird CurrentInPlaceState zu InPlaceState _ HoverTarget. Die InPlaceVisibilityChanging / InPlaceVisibilityChanged-Ereignisse können verwendet werden, um den Sichtbarkeitszustand des In-Place Eingabebereichs nachzuverfolgen.

Schließlich kann ein Entwickler erzwingen, dass der In-Place Eingabebereich mithilfe der SetInPlaceVisibility-Methode ausgeblendet oder angezeigt wird. Wenn der Entwickler zuvor die DefaultInPlaceState-Eigenschaft festgelegt hat, wird der Eingabebereich im angegebenen Zustand angezeigt, wenn die Show erzwungen wird. Eine Anwendung darf den In-Place Eingabebereich nur ausblenden oder anzeigen, wenn sich der Fokus derzeit im Fenster befindet, an das das TextInputPanel-Objekt angefügt ist und der Benutzer den Eingabebereich nicht in einem anderen Interaktionsmodus geöffnet hat, z. B. angedockt oder unverankert. Die Möglichkeit, das Ausblenden oder Einblenden des In-Place Eingabebereichs zu erzwingen, ist auch mit dem TextInputPanel-Objekt neu und mit dem PenInputPanel-Objekt nicht möglich.

Mit diesen Optionen können Anwendungsentwickler genau steuern, wann und in welchem Zustand der In-Place Eingabebereich angezeigt wird. Durch Anpassen des standardmäßigen zustandsbasierten Zustands und Steuern der sichtbarkeit an Ort und Stelle unabhängig von Fokusänderungen kann ein Anwendungsentwickler einen benutzerdefinierten Arbeitsablauf erstellen, wenn der Eingabebereich entweder auf Anwendungseinstellungen oder Benutzereingaben in einer Anwendung reagiert.

Absolute Positionierung des Eingabebereichssymbols und des Eingabebereichs

Das vielleicht überzeugendste neue Feature im TextInputPanel-Objekt ist die absolute Positionierung des In-Place Eingabebereichs. Mit dieser neuen Funktion kann ein Anwendungsentwickler sicherstellen, dass sich der In-Place Eingabebereich nicht mit einem oder mehreren wichtigen visuellen Elementen in einem Anwendungslayout überschneidet. Mit dem PenInputPanel-Objekt war es möglich, den In-Place Eingabebereich relativ zu einem Textfeld basierend auf einem Offset zu positionieren. Der Eingabebereich passte sich jedoch weiterhin an, um auf dem Bildschirm zu bleiben. Zum ersten Mal in Vista kann eine Anwendung den In-Place Eingabebereich mithilfe von Bildschirmkoordinaten an einer absoluten Position positionieren. Darüber hinaus ist der Anwendungsentwickler dafür verantwortlich, den Eingabebereich auf dem Bildschirm zu belassen, sodass die Wahrscheinlichkeit beseitigt wird, dass sich der Eingabebereich automatisch und scheinbar nach dem Zufallsprinzip neu positioniert.

Hinweis

Die in diesem Abschnitt erläuterten Eigenschaften und Methoden gelten nur, wenn sich der Eingabebereich im In-Place Interaktionsmodus befindet.

Die beiden wichtigsten Methoden, die für die absolute Positionierung des In-Place Eingabebereichs erforderlich sind, sind SetInPlacePosition und SetInPlaceHoverTargetPosition. Der erste wird verwendet, um den Speicherort des In-Place Eingabebereichs anzugeben, und der zweite wird verwendet, um den Speicherort des Eingabebereichssymbols für den In-Place Eingabebereich anzugeben. Wenn eine Anwendung nur die Position des Eingabebereichssymbols und nicht den Speicherort des In-Place Eingabebereichs festlegen möchte, wird der In-Place Eingabebereich an dem vom System festgelegten Standardspeicherort angezeigt. Wenn eine Anwendung den In-Place Eingabebereich neu positioniert, aber nicht das Eingabebereichssymbol, wird das Eingabebereichssymbol am Standardspeicherort angezeigt. Die Position wird in Bildschirmkoordinaten angegeben. Der tatsächliche Punkt, der positioniert wird, ist die obere linke Ecke des Eingabebereichssymbols oder des Eingabebereichs ohne erweitertes Korrekturkämm. Wenn der Korrekturkumpf erweitert wird, ändert sich der positionierte Punkt nicht. (Siehe Abbildung 2 unten) Es gibt keine Einschränkungen dafür, wo sich der In-Place Eingabebereich und das In-Place Eingabebereichssymbol befinden können, und es liegt in der Verantwortung der Anwendungen, die diese Methoden aufrufen, sie auf dem Bildschirm zu behalten. Beide Methoden sind synchron. Dies bedeutet, dass die Positionierung erfolgt, bevor die Methode zurückgegeben wird. Wenn der Eingabebereich bereits im unverankerten oder angedockten Interaktionsmodus geöffnet ist, schlägt der Versuch fehl, den In-Place Eingabebereich oder das In-Place Eingabebereichssymbol zu positionieren. Darüber hinaus schlagen die Methoden fehl, wenn das an das TextInputPanel-Objekt angefügte Fenster derzeit nicht den Fokus besitzt.

Ein Aufruf von SetInPlacePosition oder SetInPlaceHoverTargetPosition bewirkt nicht automatisch, dass das In-Place Eingabebereichs- oder Eingabebereichssymbol angezeigt wird, sondern legt einfach die Position für das nächste Mal fest, wenn sie angezeigt werden. Der Aufruf von SetInPlaceVisibility kann verwendet werden, um zu erzwingen, dass sie sofort angezeigt werden.

Messungen des bereichsbasierten Eingabebereichs

Beim Positionieren des In-Place Eingabebereichs kann die Berechnung, ob er vom Bildschirm ausgeht, etwas schwierig sein. Um diesen Prozess zu vereinfachen, gibt es mehrere Eigenschaften des TextInputPanel-Objekts, die verwendet werden können, um diesen Prozess zu vereinfachen. Zusammen können diese Eigenschaften und das Ereignis verwendet werden, um die genaue Größe des In-Place Eingabebereichs in allen Zuständen zu bestimmen:

  • InPlaceBoundingRectangle:Diese Eigenschaft stellt das umschließende Rechteck für den In-Place Eingabebereich bereit, wenn der größte Eingabebereich für die aktuelle Eingabesprache angezeigt wird. Wenn das Schreibpad oder Zeichenpad auf den größten Eingabebereich festgelegt wird, wird die Höhe der Schaltfläche Einfügen eingeschlossen. Sie enthält nicht die Höhe des Korrekturknämpfs. Wenn der In-Place Eingabebereich automatisch wächst, wird das InPlaceSizeChanging / InPlaceSizeChanged-Ereignispaar ausgelöst, und der Wert dieser Eigenschaft wird aktualisiert, um den zusätzlichen Schreibbereich oder die Schreibzeile einzuschließen.
  • PopUpCorrectionHeight:Diese Eigenschaft gibt die Höhe des Nacheinfügungskorrektur-Kommas an, wenn es sich über dem Eingabebereich befindet. Fügen Sie popUpCorrectionHeight die Höhe des InPlaceBoundingRectangle hinzu, um die vollständige Höhe des In-Place Eingabebereichs mit dem eingeblendeten Nacheinfügungskorrektur-Comb abzurufen.

Als einfachere Alternative zum Festlegen der absoluten Position des In-Place Eingabebereichs und des Eingabebereichssymbols kann eine Anwendung einfach angeben, ob der In-Place Eingabebereich standardmäßig über oder unter einem Texteingabefeld angezeigt wird. Auf diese Weise ist es möglich, überlappende Elemente im Anwendungslayout auf lose kontrollierte Weise zu vermeiden. Hierzu legt die Anwendung PreferredInPlaceDirection auf InPlaceDirection _ Bottom oder InPlaceDirection _ Top fest. Die -Eigenschaft ist eine Einstellung, da der In-Place Eingabebereich die einstellung überschreibt, die von der Anwendung festgelegt wird, wenn dies erforderlich ist, um den Eingabebereich auf dem Bildschirm zu halten. Die Standardeinstellung des Systems besteht darin, den In-Place Eingabebereich nach Möglichkeit unter einem Textfeld zu positionieren und andernfalls darüber zu positionieren. Durch Festlegen von PreferredInPlaceDirection auf InPlaceDirection _ Auto wird die Standardeinstellung des Systems wiederhergestellt.

Zusammen bieten die Eigenschaften, Methoden und Ereignisse des TextInputPanel-Objekts Entwicklern die erforderliche Kontrolle über den In-Place Eingabebereich, um den In-Place Eingabebereich und das Eingabebereichssymbol in einem Anwendungslayout clever zu positionieren, sodass sie den Layoutfluss nicht unterbrechen und in einigen Fällen integriert erscheinen können. Diese neue Steuerungsebene ist ein großer Gewinn für den Tablet-Anwendungsentwurf.

Zugriff auf die drei Bereiche des Eingabebereichs: Schreibpad, Zeichenpad und Tastatur

Der Eingabebereich verfügt über drei Eingabebereiche: das Schreibpad, das Zeichenpad und die Tastatur. Mit dem TextInputPanel-Objekt kann eine Anwendung den Standardeingabebereich angeben, der dem Benutzer angezeigt wird, wenn der Eingabebereich geöffnet wird. Der Hauptgrund dafür ist, dass eine Anwendung den Eingabebereich mit dem Eingabetyp eines bestimmten Felds koppelt. Beispielsweise eignet sich das Schreibpad wahrscheinlich am besten zum Ausfüllen eines Kommentarfelds, aber die Tastatur ist möglicherweise bequemer für die Eingabe einer Produktseriennummer, die sowohl Zahlen als auch Buchstaben enthält. Um den Standardeingabebereich anzugeben, legt eine Anwendung die DefaultInputArea-Eigenschaft auf einen der drei Eingabebereiche fest, die durch die PanelInputArea-Enumeration definiert werden. Die folgende Abbildung zeigt die drei Eingabebereiche.

Eingabebereich "Schreiben", "Zeichen" und "Tastatur"

Der Standardeingabebereich des Systems ist das Schreibpad für Englisch, Französisch, Deutsch, Spanisch, Italienisch, Portugiesisch, Niederländisch und alle anderen lateinischen Eingabesprachen. Für die ostasiatischen Eingabesprachen, einschließlich Japanisch, Chinesisch und Koreanisch, ist der Standardeingabebereich das Zeichenpad. Wenn der Benutzer jedoch den Eingabebereich ändert, überschreibt er den Standardeingabebereich für die aktuelle Eingabesprache und wird als neuer Standardwert für diese Eingabesprache gespeichert. Die Tastatur ist der Standardeingabebereich für Kennwortfelder, unabhängig von der Eingabesprache, es sei denn, die Kennwortsicherheit wurde durch den Benutzer oder die Gruppenrichtlinie deaktiviert. In allen Fällen überschreibt das Festlegen des Standardeingabebereichsbereichs programmgesteuert die Systemstandardeinstellung, es sei denn, das aktuelle Feld ist ein Kennwortfeld, oder die Handschrifterkennung für die aktuelle Eingabesprache unterstützt den programmgesteuert ausgewählten Eingabebereich nicht. Wenn Sie die DefaultInputArea-Eigenschaft auf InPlaceDirection _ Auto festlegen, werden die Standardeinstellungen des Systems wiederhergestellt.

Unabhängig davon, ob der Standardeingabebereich programmgesteuert festgelegt wurde oder nicht, hat der Benutzer die Möglichkeit, den aktuellen Eingabebereichsbereich zu ändern, sobald der Eingabebereich geöffnet ist. Nachdem der Benutzer den aktuellen Eingabebereich geändert hat, wird die Benutzerauswahl beibehalten, bis der Eingabebereich geschlossen wird oder der Benutzer die Auswahl erneut ändert. Nachdem der Eingabebereich geschlossen und erneut geöffnet wurde, wird der programmgesteuerte Standardeingabebereich erneut angezeigt.

Da sich der aktuelle Eingabebereich von dem Standardeingabebereich unterscheiden kann, kann eine Anwendung die CurrentInputArea-Eigenschaft abfragen, um zu bestimmen, welcher Eingabebereich derzeit sichtbar ist. Wenn der Eingabebereich derzeit nicht sichtbar ist, entspricht der aktuelle Eingabebereich dem Standardeingabebereich. Die CurrentInputArea-Eigenschaft ist nie gleich PanelInputArea _ Auto. Wenn DefaultInputArea gleich PanelInputArea _ Auto ist, ist CurrentInputArea gleich dem zuletzt angezeigten Eingabebereich oder der System default für die aktuelle Eingabesprache, wenn der Eingabebereich noch nie angezeigt wurde.

Der Hauptunterschied zwischen der Eingabebereichsunterstützung im PenInputPanel-Objekt und der des TextInputPanel-Objekts besteht in der Tatsache, dass die Anwendung jetzt die Möglichkeit hat, den Standardeingabebereich zusätzlich zum Schreibpad und zur Tastatur auf das Zeichenpad zu setzen.

Mithilfe der oben genannten Eigenschaften kann eine Anwendung den Eingabebereich des Eingabebereichs steuern, der in verschiedenen Feldern angezeigt wird, und die Texteingabeerfahrung des Benutzers optimieren. Darüber hinaus kann die Anwendung den aktuellen Eingabebereich im Bewusstsein behalten und bedingte Entscheidungen treffen, je nach dem Eingabebereich, der für die aktuelle Benutzeraufgabe am besten geeignet ist.

Ausführliche Informationen zum Interaktionsmodus des Eingabebereichs

Zusätzlich zur Erkennung des aktuellen Eingabebereichs des Eingabebereichs ist es auch möglich, den aktuellen Interaktionsmodus zu erkennen: "In-Place", "Docked" oder "Floating". Es kann wichtig sein, dass die Anwendung den aktuellen Interaktionsmodus kennt, um zu verstehen, wie der Benutzer mit der Anwendung interagiert, oder weil einige Methoden und Eigenschaften des TextInputPanel-Objekts nur für den In-Place-Interaktionsmodus gelten. In der Anwendung werden beispielsweise vorhandene Benutzeroberflächenelemente neu geschaltet, und anschließend sollte der In-Place-Eingabebereich über einen leeren Bereich in den Benutzeroberflächen überprüft werden, um sicherzustellen, dass der aktuelle Interaktionsmodus vorhanden ist, bevor Anpassungen vorgenommen werden.

Angedockte, unverankerte und in-pace-Eingabebereichsmodi

Die CurrentInteractionMode-Eigenschaft des TextInputPanel-Objekts speichert den aktuellen Interaktionsmodus, wie er vom Benutzer ausgewählt wurde. Die möglichen Modi werden von der InteractionMode-Enumeration wie die folgenden definiert:

InteractionMode _ InPlace: Im In-Place Der Eingabebereich wird neben dem Texteingabefeld angezeigt, das derzeit den Fokus besitzt. Standardmäßig wird das In-Place Eingabebereichssymbol angezeigt, wenn eine Einfügemarke in ein Texteingabefeld eingefügt wird. Wenn Sie auf das Eingabebereichssymbol tippen, wird der Eingabebereich erweitert. Der In-Place Eingabebereich ist nur sichtbar, wenn sich eine Einfügemarke in einem bearbeitbaren Feld befindet.

InteractionMode Floating: Der Floating-Interaktionsmodus ähnelt dem InPlace-Interaktionsmodus, ist jedoch nicht an _ eine Einfügemarke gebunden. Der Unverankerte Eingabebereich wird geöffnet, indem Sie auf die Registerkarte Eingabebereich tippen, die standardmäßig am linken Rand des Bildschirms angezeigt wird. Sowohl der Unverankerte Eingabebereich als auch die Registerkarte Eingabebereich können vom Benutzer gezogen und neu positioniert werden. Im Gleitkommamodus bleiben Positionierung und Steuerung des Eingabebereichs vollständig dem Benutzer übrig.

InteractionMode DockedTop: Im Docked-Top-Interaktionsmodus wird der Eingabebereich oben auf dem Bildschirm angezeigt, und die Größe des aktiven Desktops wird geändert, sodass sich der Eingabebereich nicht mit anderen Fenstern oder Benutzeroberflächenelementen _ überschneidet. Im angedockten Modus kann der Eingabebereich nicht gezogen oder verschoben werden.

InteractionMode DockedBottom: Der Docked-Bottom-Interaktionsmodus ist mit dem Docked-Top-Modus identisch, mit der Ausnahme, dass der Eingabebereich am unteren _ Bildschirmrand angezeigt wird.

Wenn der Eingabebereich nicht angezeigt wird, ist der aktuelle Interaktionsmodus "In-Place".

Die Veröffentlichung des aktuellen Interaktionsmodells ist eine weitere Möglichkeit, wie das TextInputPanel-Objekt mehr Informationen über den Zustand des Eingabebereichs liefert, als in einer früheren Version verfügbar war.

Ausführliche Informationen zum Korrekturmodus des Eingabebereichs

Der letzte Aspekt des Eingabebereichs, den Das TextInputPanel-Objekt Ihnen ausführliche Informationen zu und die Steuerung von bietet, ist der Korrekturmodus. Wenn Sie den Korrekturmodus kennen, können Anwendungen die aktuelle Größe des Eingabebereichs ermitteln. Die Steuerung der Erweiterung der Korrektur nach dem Einfügen in einer Anwendung ist eine Möglichkeit, die Korrekturerfahrung in einer Anwendung anzupassen.

Es gibt zwei grundlegende Modi, in dem das Korrektur comb angezeigt werden kann: Pre-Insertion (Voreinfügung) und Post-Insertion (Nacheinfügung). Das Korrektur comb vor dem Einfügen wird verwendet, um Text vor dem Einfügen in eine Anwendung zu korrigieren. Sie wird aktiviert, indem sie auf den ausstehenden Text tippt, der im Schreibpad unterhalb der Baseline angezeigt wird, wenn der Benutzer freit. Das Korrekturkämmerfeld nach dem Einfügen wird verwendet, um Text zu korrigieren, nachdem er in eine Anwendung eingefügt wurde. Sie wird aktiviert, indem die Einfügemarke eingefügt oder text ausgewählt wird, der zuvor eingefügt wurde. Über die beiden grundlegenden Modi hinaus gibt es mehrere Variationen, wie das Korrekturkämmern nach dem Einfügen angezeigt werden kann. Zuerst kann sie entweder über oder unterhalb des Eingabebereichs angezeigt werden, und zweitens kann sie reduziert oder erweitert angezeigt werden. Im reduzierten Zustand zeigt das Nacheinfügekorrektur-Comb nur eine Liste von Alternativen an. Im erweiterten Zustand enthält sie sowohl die Alternativen als auch einen Bereich zum erneuten Schreiben des Worts.

Eingabebereich für Korrektur comb, pre und post insert

Mit der CurrentCorrectionMode-Eigenschaft kann eine Anwendung die aktuelle Konfiguration des Korrektur comb bestimmen. Die möglichen Werte dieser Eigenschaft, wie von den CorrectionMode-Enumerationen definiert, sind: NotVisible, PreInsertion, PostInsertionCollapsed und PostInsertionExpanded. Wenn kein Eingabebereich oder Korrektur comb sichtbar ist, ist CurrentCorrectionMode NotVisible.

Standardmäßig zeigt das System das Nacheinfügekorrekturs-Comb erweitert an, wenn den korrigierenden Text auswählt, und zeigt an, dass es reduziert ist, wenn die Einfügemarke in korrigierenden Text eingefügt wird. Eine Anwendung kann angeben, wo das Comb für die Korrektur nach dem Einfügen immer erweitert werden soll, indem die ExpandPostInsertionCorrection-Eigenschaft auf TRUE festgelegt wird. Der Standardwert des Systems ist false. Wenn die ExpandPostInsertionCorrection-Eigenschaft in Verbindung mit der IHandWrittenTextInsertion-Schnittstelle verwendet wird, kann ein Anwendungsentwickler Anwendungen, die sie nicht automatisch erhalten würden, kostengünstige Korrekturunterstützung hinzufügen.

Das Nachverfolgen und Steuern des Korrekturzustands des Eingabebereichs ist eines der vielen neuen Features des TextInputPanel-Objekts, die eine strengere Eingabebereichs- und Anwendungsintegration ermöglichen.

Ereignisbenachrichtigung vor und nach dem Auftreten des Ereignisses

Ein weiterer Aspekt der Programmierbarkeit des Eingabebereichs, der im TextInputPanel-Objekt erheblich verbessert wird, ist das Ereignismodell. Anstatt jetzt nur Ereignisse zu senden, die eine Änderung des Zustands des Eingabebereichs nach der Änderung signalisieren, werden vor und nach der Änderung separate Ereignisse gesendet. Ereignisse, die den Beginn eines Ereignisses signalisieren, enthalten aktuelle Tenseverben wie "Changing" oder "Inserting", während Ereignisse, die den Abschluss eines Ereignisses signalisieren, vergangene Tenseverben wie "Changed" oder "Inserted" enthalten.

Dieses Ereignismodell ermöglicht es einer Anwendung, vor oder während einer Änderung auf eine Änderung zu reagieren. Der Eingabebereich kann nach einer Änderung nicht fortfahren oder fortsetzen, bis die Ereignishandler für alle Ereignisse abgeschlossen sind. Diese Ereignisse sind synchron, und auf diese Weise kann eine Anwendung eine Änderung verzögern, bis sie die Reaktion beendet hat. Die Zeit, in der ein Ereignishandler den Eingabebereich auswertet, kann für den Benutzer jedoch nicht mehr zugänglich sein und kann hängen bleiben. Daher ist es wichtig, dass der Ereignishandler eine gute Leistung zeigt. Es ist jedoch nicht möglich, dass eine Anwendung ein Ereignis verhindert oder abbricht. Alle Ereignisparameter sind schreibgeschützt. Im Folgenden finden Sie eine Beschreibung der sechs Ereignispaare des TextInputPanel-Objekts:

  • InPlaceStateChanging / InPlaceStateChanged:Benachrichtigung, dass sich der zustandsbehind gerade in oder gerade vom Hover zu erweitert oder umgekehrt geändert hat. Parameter sind der neue und alte in-place-Zustand. Ändert den Wert der CurrentInPlaceState-Eigenschaft.
  • InPlaceSizeChanging / InPlaceSizeChanged:Wird angezeigt, wenn sich die Größe des In-Place-Eingabebereichs aufgrund einer Änderung der Benutzergröße, automatischer Vergrößerung oder einer Änderung des Eingabebereichs ändert. Parameter sind das neue und alte umgebundene Rechteck. Ändert den Wert der InPlaceBoundingRectangle-Eigenschaft.
  • InputAreaChanging / InputAreaChanged:Meldet, wenn sich der Eingabebereich des Eingabebereichs von in einen anderen der drei möglichen Eingabebereiche geändert hat: Schreibpad, Zeichenpad oder Tastatur. Parameter sind der neue und alte Eingabebereich. Stimmt mit einer Änderung des Werts der CurrentInputArea-Eigenschaft überein.
  • CorrectionModeChanging / CorrectionModeChanged: Benachrichtigung,dass sich der Korrekturmodus ändert oder sich geändert hat. Mögliche Korrekturmodi sind: nicht sichtbar, Voreinfügung, Nacheinfügung reduziert und Nacheinfügung erweitert. Parameter sind der neue und alte Korrekturmodus. Stimmt mit einer Änderung des Werts der CurrentCorrectionMode-Eigenschaft überein.
  • InPlaceVisibilityChangeing / InPlaceVisibilityChanged:Gibt an, In-Place die Sichtbarkeit des Eingabebereichs geändert oder geändert wird. Parameter sind die neue und alte Sichtbarkeit. Eine neue Sichtbarkeit von false bedeutet, dass der In-Place-Eingabebereich nicht geöffnet ist, aber nicht ausbietet, dass der Eingabebereich im unverankerten oder andockten Interaktionsmodus sichtbar ist.
  • TextInserting / TextInserted:Gibt an, wann Text eingefügt oder aus dem Eingabebereich eingefügt wurde. Parameter ist ein Array von InkDisp-Objekten, die jeweils eine Zeile der Ink-Objekte und text enthalten, aus denen die Einfügung besteht. Weitere Informationen zu diesem Ereignis finden Sie im nächsten Abschnitt.

Diese Ereignisse liefern Anwendungen wichtige Informationen zu Änderungen im Eingabebereich und ermöglichen es ihnen, entsprechend zu reagieren. Auch hier stellt die Änderung im Eingabebereich-Ereignismodell einen Schritt in Richtung einer besseren Interaktion zwischen Anwendungen und dem Eingabebereich dar.

Unterstützung für das Erfassen der im Eingabebereich eingegebenen Ink- und Texteingaben

Nicht zuletzt ist ein sehr leistungsstarkes neues Feature des TextInputPanel-Objekts die Möglichkeit, das Ink-Objekt für Text, der über den Eingabebereich eingegeben wurde, aus dem Eingabebereich zu dem Zeitpunkt, zu dem der Text in eine Anwendung eingefügt wird, zu erhalten. Dies ist ein häufig angefordertes Feature zum Zweck der Änderungsnachverfolgung und Datensatzerfassung. Außerdem können Anwendungen die Ink in ihrer Benutzeroberfläche entweder als statisches Element oder mit einer benutzerdefinierten Ink-Oberfläche verwenden.

Um das InkDisp-Objekt für Text zu empfangen, der über den Eingabebereich eingegeben wurde, muss sich eine Anwendung registrieren, um die vom TextInputPanel-Objekt generierten TextInserting- oder TextInserted-Ereignisse zu empfangen. Das TextInserting-Ereignis wird unmittelbar vor dem Einfügen von Text aus dem Eingabebereich in eine Anwendung ausgelöst, und der Text wird erst eingefügt, wenn alle Ereignishandler abgeschlossen sind. Das TextInserted-Ereignis wird sofort nach dem Einfügen des Tests angezeigt. Der einzige Parameter für das TextInserting- und TextInserted-Ereignis ist ein Array von InkDisp-Objekten, das ein InkDisp-Objekt für jede Textzeile enthält, die aus dem Eingabebereich eingefügt wird. Hinweis: Der Eingabebereich ist inaktiv, während die Ereignishandler ausgeführt werden, und kann für den Benutzer hängen bleiben. Daher ist es wichtig, diese Ereignishandler einfach zu machen und sicherzustellen, dass sie schnell ausgeführt werden. Darüber hinaus sollte eine Anwendung keinen Handler für dieses Ereignis erstellen, es sei denn, sie hat eine bestimmte Verwendung für die Informationen, da damit Leistungskosten verbunden sind. Der Eingabebereich marshallt die Ink-Daten nur, wenn eine Anwendung die Daten an fordert. Andernfalls kann der Eingabebereich diesen kostspieligen Vorgang überspringen. Die Parameter der Ereignisse TextInserting und TextInserted sind schreibgeschützt, was bedeutet, dass Anwendungen eingefügten Text nicht ändern können, bevor er in die Anwendung eingefügt wird.

Die Möglichkeiten, welche Möglichkeiten Anwendungen mit dieser neuen Funktionalität haben, sind breit gefächert und könnten nicht einfacher zu verwenden sein. Zulassen, dass erkannte Text- und Ink-Daten, die über den Eingabebereich eingegeben werden, von Anwendungen gesammelt werden können, ist eine weitere Möglichkeit, die Entwicklergeschichte des Eingabebereichs in Windows Vista zu verbessern.

Zusammenfassung

Insgesamt wird die Programmierbarkeit des Tablet PC-Eingabebereichs durch die Einführung des TextInputPanel-Objekts in Windows Vista erheblich verbessert. Durch die Verwendung des TextInputPanel-Objekts haben Anwendungsentwickler mehr Kontrolle und weitere Informationen zum Zustandseingabebereich in der vorherigen Version. Daher wird Anwendungsentwicklern, die neue Tablet PC-Anwendungen erstellen oder vorhandene Anwendungen aktualisieren, dringend empfohlen, das TextInputPanel-Objekt anstelle des veralteten PenInputPanel-Objekts zu verwenden. Darüber hinaus ermöglichen die Unterstützung für neue Features wie die absolute Positionierung des Eingabebereichs und des Eingabebereichssymbols sowie die Möglichkeit, dass die Anwendung sowohl über den Eingabebereich eingegebenen Text als auch Diebeingaben empfangen kann, neue Anwendungsfunktionen und -szenarien. Die Einbeziehung dieser Features und mehrerer anderer Funktionen ist eine direkte Reaktion auf Entwicklerfeedback und markiert die ersten Schritte zur vollständigen Integration des Eingabebereichs in Tablet PC-Anwendungen. Letztendlich ist die Erweiterung der Tablet PC-Anwendungsfunktionalität sowohl für Anwendungsentwickler als auch für die Tablet PC-Plattform ein großer Gewinn.