Freigeben über


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 ihm interagieren kann. Zum ersten Mal können Anwendungsentwickler das In-Place Eingabebereichssymbol so positionieren, dass es ein Textfeld enthält, oder es in der Ecke einer Freihandfläche des Kunden platzieren, um den 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. Dies ermöglicht es, sicherzustellen, dass sich der In-Place Eingabebereich niemals mit wichtigen Elementen der Benutzeroberfläche einer Anwendung 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 zum ersten Mal möglich, dass eine Anwendung zusätzlich zum erkannten Text, der Texteinfügungen aus dem Eingabebereich zugeordnet ist, die Freihandeingabe des Benutzers erhält. 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 über die Entwicklungsgeschichte des Eingabebereichs erhalten hat, und stellen den ersten Schritt in Richtung einer engeren Integration von Anwendungen und Eingabebereich dar.

Um dieses angereicherte Eingabebereich-Programmierbarkeitsmodell bereitzustellen, wird der vorhandene Mechanismus für die programmgesteuerte Interaktion mit dem Eingabebereich, das PenInputPanel-Objekt , veraltet und durch das neue TextInputPanel-Objekt ersetzt. Neben neuen Programmierbarkeitsfeatures 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, aber beim Schreiben neuer Tablet-Anwendungen wird Entwicklern 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 instance des TextInputPanel-Objekts mithilfe der AttachedEditWindow-Eigenschaft angefügt wird. Die -Eigenschaft sollte auf das Fensterhandle für das Textfeld festgelegt werden.

Hinweis

: Mehrere der unten beschriebenen Eigenschaften und Methoden gelten, wenn sich der Eingabebereich im direkten Interaktionsmodus befindet und nicht, wenn sich der Eingabebereich im schwebenden oder angedockten Interaktionsmodus befindet. Der direkte Interaktionsmodus ist das Verhalten des Eingabebereichs, bei dem das Festlegen des Fokus in einem bearbeitbaren Feld dazu führt, dass das Eingabebereichssymbol neben dem Feld angezeigt wird, und wenn Sie auf das Eingabebereichsymbol tippen, wird der Eingabebereich erweitert. Die Methoden und Eigenschaften, die nur angewendet werden, wenn sich der Eingabebereich im direkten Interaktionsmodus befindet, enthalten alle "InPlace" im Methoden- oder Eigenschaftsnamen.

 

Steuerung des Eingabebereichsymbols und der Sichtbarkeit des Eingabebereichs

Der erste Aspekt des Eingabebereichs, über den Anwendungsentwickler in Windows Vista mehr Kontrolle haben, ist seine 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 Eingabebereichsymbol angezeigt wird oder sofort erweitert angezeigt wird. Durch Die Kombination dieser Techniken zum Steuern der Sichtbarkeit mit den im nächsten Abschnitt erläuterten Techniken zur Steuerung der Positionierung ist es Anwendungsentwicklern möglich, benutzerdefinierte Startpunkte und benutzerdefinierte Arbeitsflüsse mithilfe des In-Place Eingabebereichs in einer Anwendung zu 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 im Wesentlichen ist es möglich, zu verhindern, dass die In-Place Eingabebereich und das Eingabebereichssymbol jemals angezeigt werden, indem Sie die InPlaceVisibleOnFocus-Eigenschaft auf false festlegen. Wenn sie auf true festgelegt wird, wird es nach Möglichkeit auf den Systemstandard zurückgesetzt, sofern er 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, welcher direkte Zustand, wie durch die InPlaceState-Enumeration angegeben, In-Place Eingabebereich 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 Eingabebereichsymbol angezeigt wird und der Benutzer dann auf das Eingabebereichssymbol tippen muss, bevor der Eingabebereich erweitert wird. Die beiden anderen Optionen sind InPlaceState_Auto, d. h. das Standardverhalten des Systems und InPlaceState_HoverTarget , das immer dazu führt, dass das Eingabebereichssymbol angezeigt wird. Die Möglichkeit, anzugeben, dass der In-Place Eingabebereich immer erweitert angezeigt wird, ist mit dem TextInputPanel-Objekt neu und nicht mit dem PenInputPanel-Objekt möglich. Die folgende Abbildung zeigt das In-Place-Eingabebereichsymbol und erweiterte Zustände des Bereichs.

Direktes Eingabebereichsymbol und erweiterte Zustände

Neben der Möglichkeit, den direkten Zustand zu steuern, ist es für einen Entwickler auch möglich, den Ortszustand zu einem bestimmten Zeitpunkt zu bestimmen, indem er die CurrentInPlaceState-Eigenschaft erhält. CurrentInPlaceState ist gleich DefaultInPlaceState, wenn der Eingabebereich nicht sichtbar ist, außer wenn DefaultInPlaceStateInPlaceState_Auto in diesem Fall wird CurrentInPlaceStateInPlaceState_HoverTarget. Die InPlaceVisibilityChanging / InPlaceVisibilityChanged-Ereignisse können verwendet werden, um den Sichtbarkeitsstatus des In-Place Eingabebereichs nachzuverfolgen.

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

Diese Optionen ermöglichen Anwendungsentwicklern eine präzise Kontrolle darüber, wann der In-Place Eingabebereich angezeigt wird und in welchem Zustand. Durch Anpassen des direkten Standardzustands und Steuern der direkten Sichtbarkeit 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 Eingabebereichsymbols und des Eingabebereichs

Das möglicherweise ü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 würde sich jedoch weiterhin anpassen, um auf dem Bildschirm zu bleiben. Zum ersten Mal in Vista kann eine Anwendung den In-Place Eingabebereichs mithilfe von Bildschirmkoordinaten an einer absoluten Position positionieren. Darüber hinaus liegt die Verantwortung für das Beibehalten des Eingabebereichs auf dem Bildschirm beim Anwendungsentwickler, wodurch die Wahrscheinlichkeit beseitigt wird, dass sich der Eingabebereich automatisch und scheinbar zufällig 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 primären Methoden, die für die absolute Positionierung des In-Place Eingabebereichs erforderlich sind , sind SetInPlacePosition und SetInPlaceHoverTargetPosition. Die erste wird verwendet, um die Position des In-Place Eingabebereichs anzugeben, und der zweite wird verwendet, um die Position des Eingabebereichssymbols für den In-Place Eingabebereich anzugeben. Wenn eine Anwendung sich dafür entscheidet, nur die Position des Eingabebereichssymbol und nicht die Position des In-Place Eingabebereichs festzulegen, wird der In-Place Eingabebereich an der vom System festgelegten Standardposition angezeigt. Wenn eine Anwendung den In-Place Eingabebereich, aber nicht das Eingabebereichssymbol neu positioniert, wird das Eingabebereichssymbol an der Standardposition 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 erweiterten Korrekturkamm. Wenn der Korrekturkamm erweitert wird, ändert sich der positionierte Punkt nicht. (Siehe Abbildung 2 unten) Es gibt keine Einschränkungen, wo sich die In-Place Eingabebereich und das In-Place Eingabebereichssymbol befinden können, und es liegt in der Verantwortung der Anwendungen, die diese Methoden aufrufen, diese auf dem Bildschirm zu behalten. Beide Methoden sind synchron, was bedeutet, dass die Positionierung erfolgt, bevor die Methode zurückgibt. Wenn der Eingabebereich bereits im gleitenden oder angedockten Interaktionsmodus geöffnet ist, schlägt der Versuch, die In-Place Eingabebereich oder das In-Place Eingabebereichssymbol zu positionieren, fehl. Darüber hinaus schlagen die Methoden fehl, wenn das Fenster, das an das TextInputPanel-Objekt angefügt ist, derzeit keinen Fokus hat.

Ein Aufruf von SetInPlacePosition oder SetInPlaceHoverTargetPosition führt nicht automatisch dazu, dass die In-Place Eingabebereich oder das Eingabebereichsymbol angezeigt wird. Er legt einfach die Position für die nächste Anzeige fest. Das Aufrufen von SetInPlaceVisibility kann verwendet werden, um die sofortige Anzeige zu erzwingen.

Messungen des direkten Eingabebereichs

Beim Positionieren des In-Place Eingabebereichs, der berechnet, ob er vom Bildschirm ausgeht, kann ein wenig 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 ereignisse verwendet werden, um die genaue Größe des In-Place Eingabebereichs in allen Zuständen zu bestimmen:

  • InPlaceBoundingRectangle: Diese Eigenschaft stellt das umgebende Rechteck für den In-Place Eingabebereich bereit, wenn der größte Eingabebereich für die aktuelle Eingabesprache angezeigt wird. Wenn das Schreibpad oder das Zeichenpad auf den größten Eingabebereich festgelegt wird, ist die Höhe der Schaltfläche Einfügen enthalten. Die Höhe des Korrekturkamms ist nicht enthalten. Wenn der In-Place Eingabebereich automatisch wächst, wird das InPlaceSizeChangingInPlaceSizeChanged-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ügungskorrekturkombi an, wenn er sich über dem Eingabebereich befindet. Fügen Sie die Höhe des InPlaceBoundingRectangles zum PopUpCorrectionHeight hinzu, um die volle Höhe des In-Place Eingabebereichs zu erhalten.

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 oberhalb oder unterhalb eines Texteingabefelds angezeigt wird. Auf diese Weise ist es möglich, überlappende Elemente im Anwendungslayout auf eine lose kontrollierte Weise zu vermeiden. Hierzu legt die Anwendung die PreferredInPlaceDirection auf InPlaceDirection_Bottom oder InPlaceDirection_Top fest. Die -Eigenschaft ist eine Einstellung, da der In-Place Eingabebereich die von der Anwendung festgelegte Einstellung außer Kraft setzt, wenn dies erforderlich ist, um den Eingabebereich auf dem Bildschirm beizubehalten. Standardmäßig wird der In-Place Eingabebereich nach Möglichkeit unter einem Textfeld positioniert und andernfalls darüber positioniert. Durch Festlegen von PreferredInPlaceDirection auf InPlaceDirection_Auto wird der Systemstandard wiederhergestellt.

Zusammen geben 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 geschickt positionieren zu können, sodass sie den Layoutfluss nicht stören und in einigen Fällen integriert erscheinen. Diese neue Steuerungsebene ist ein großer Gewinn für das Design von Tablet-Anwendungen.

Zugriff auf die drei Eingabebereichsbereiche: Schreibblock, Zeichenblock und Tastatur

Der Eingabebereich verfügt über drei Eingabebereiche: Schreibblock, Zeichenblock und Tastatur. Mithilfe des TextInputPanel-Objekts kann eine Anwendung den Standardeingabebereich angeben, der dem Benutzer beim Öffnen des Eingabebereichs angezeigt wird. Der Standard Grund dafür, dass eine Anwendung dies tut, besteht darin, den Eingabebereich mit dem Eingabetyp eines bestimmten Felds zu koppeln. 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 sind. Die folgende Abbildung zeigt die drei Eingabebereiche.

Eingabebereich für Schreib-, Zeichen- und Tastatureingabe

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 Standard für diese Eingabesprache gespeichert. Die Tastatur ist der Standardeingabebereich für Kennwortfelder, unabhängig von der Eingabesprache, es sei denn, die Kennwortsicherheit wurde von der Benutzer- oder Gruppenrichtlinie deaktiviert. In allen Fällen überschreibt das programmgesteuerte Festlegen des Standardeingabebereichs den Systemstandard, 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 Systemstandardeinstellungen wiederhergestellt.

Unabhängig davon, ob der Standardbereich des Eingabebereichs programmgesteuert festgelegt wurde oder nicht, hat der Benutzer die Möglichkeit, den aktuellen Eingabebereichbereich zu ändern, sobald der Eingabebereich geöffnet ist. Nachdem der Benutzer den aktuellen Eingabebereich geändert hat, bleibt die Benutzerauswahl so lange erhalten, bis der Eingabebereich geschlossen wird oder der Benutzer die Auswahl erneut ändert. Nachdem der Eingabebereich geschlossen und erneut geöffnet wurde, wird der standardmäßige Eingabebereich programmgesteuert wieder angezeigt.

Da sich der aktuelle Eingabebereichsbereich von dem Standardbereich des Eingabebereichs unterscheidet, 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 defaultInputAreagleich PanelInputArea_Auto ist, entspricht der CurrentInputArea dem zuletzt angezeigten Eingabebereich oder dem Systemstandard für die aktuelle Eingabesprache, wenn der Eingabebereich noch nie angezeigt wurde.

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

Mit den 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 das Bewusstsein für den aktuellen Eingabebereich aufrechterhalten und bedingte Entscheidungen treffen, nach denen der Eingabebereich am besten für die aktuelle Benutzeraufgabe geeignet ist.

Detaillierte 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 entweder zu verstehen, wie der Benutzer mit der Anwendung interagiert, oder weil einige Methoden und Eigenschaften des TextInputPanel-Objekts nur auf den In-Place Interaktionsmodus angewendet werden. Beispielsweise werden in der Anwendung vorhandene Benutzeroberflächenelemente neu geflowt und dann die In-Place Eingabebereichs über einen leeren Bereich in den Benutzeroberflächen positioniert, um zu überprüfen, ob der aktuelle Interaktionsmodus vorhanden ist, bevor Anpassungen vorgenommen werden.

Angedockte, schwebende und In-Pace-Eingabebereichmodi

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

InteractionMode_InPlace– Im In-Place Interaktionsmodus-Eingabebereich wird neben dem Texteingabefeld angezeigt, das derzeit den Fokus hat. Standardmäßig wird das In-Place Eingabebereichsymbol angezeigt, wenn eine Einfügemarke in einem Texteingabefeld platziert wird. Durch Tippen auf das Eingabebereichssymbol wird der Eingabebereich erweitert. Der In-Place Eingabebereichs ist nur sichtbar, wenn sich eine Einfügemarke in einem bearbeitbaren Feld befindet.

InteractionMode_Floating: Der Schwebende Interaktionsmodus ähnelt dem InPlace-Interaktionsmodus, mit der Ausnahme, dass er nicht an eine Einfügemarke gebunden ist. Der schwebende Eingabebereich wird geöffnet, indem Sie auf die Registerkarte Eingabebereich tippen, die standardmäßig am linken Bildschirmrand angezeigt wird. Sowohl die Registerkarte "Floating Input Panel" als auch die Registerkarte "Eingabebereich" können vom Benutzer gezogen und neu positioniert werden. Im gleitenden Modus bleibt die Positionierung und Steuerung des Eingabebereichs vollständig dem Benutzer überlassen.

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 UI-Elementen ü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 unten auf dem Bildschirm angezeigt wird.

Wenn der Eingabebereich nicht sichtbar ist, ist der aktuelle Interaktionsmodus In-Situ.

Das Veröffentlichen des aktuellen Interaktionsmodells ist eine weitere Möglichkeit, wie das TextInputPanel-Objekt mehr Informationen zum Zustand des Eingabebereichs bereitstellt, als in jeder früheren Version verfügbar war.

Detaillierte Informationen zum Korrekturmodus des Eingabebereichs

Der letzte Aspekt des Eingabebereichs, den Das TextInputPanel-Objekt Ihnen detaillierte Informationen zu und Steuerung gibt, ist der Korrekturmodus. Wenn Sie den Korrekturmodus kennen, können Anwendungen die aktuelle Größe des Eingabebereichs bestimmen. Die Kontrolle, wie die Korrektur nach dem Einfügen in einer Anwendung erweitert wird, ist eine Möglichkeit, die Korrekturerfahrung in einer Anwendung anzupassen.

Es gibt zwei grundlegende Modi, in denen der Korrekturkamm angezeigt werden kann: Pre-Insertion und Post-Insertion. Der Voreinfügungskorrekturkomb wird verwendet, um Text zu korrigieren, bevor er in eine Anwendung eingefügt wird. Sie wird aktiviert, indem Sie auf den ausstehenden Text tippen, der unter der Baseline im Schreibpad als Benutzerfarben angezeigt wird. Der Korrekturkomb nach dem Einfügen wird verwendet, um Text zu korrigieren, nachdem er in eine Anwendung eingefügt wurde. Es wird aktiviert, indem die Einfügemarke in oder der zuvor eingefügte Text ausgewählt wird. Über die beiden grundlegenden Modi hinaus gibt es mehrere Variationen, wie der Nacheinfügungskorrekturkomb angezeigt werden kann. Erstens kann es entweder über oder unter dem Eingabebereich angezeigt werden, und zweitens kann er reduziert oder erweitert erscheinen. Im reduzierten Zustand zeigt der Nacheinfügungskorrekturkomb nur eine Liste von Alternativen an. Im erweiterten Zustand enthält es sowohl die Alternativen als auch einen Bereich zum Umschreiben des Worts.

Korrekturkamm, Eingabebereich vor und nach dem Einfügen

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

Standardmäßig zeigt das System den erweiterten Nacheinfügungskorrekturkamm an, wenn der korrekturbaren Text auswählt, und zeigt ihn reduziert an, wenn die Einfügemarke in korrekturfähigem Text platziert wird. Eine Anwendung kann angeben, wo der Nacheinfügungskorrekturkomb immer erweitert angezeigt werden soll, indem die ExpandPostInsertionCorrection-Eigenschaft auf true festgelegt wird. Der Systemstandard ist false. Wenn die ExpandPostInsertionCorrection-Eigenschaft in Verbindung mit der IHandWrittenTextInsertion-Schnittstelle verwendet wird, kann ein Anwendungsentwickler Auf billige Weise Korrekturunterstützung für Anwendungen hinzufügen, die sie nicht automatisch erhalten würden.

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

Ereignisbenachrichtigung vor und nach dem Ereignisereignis

Ein weiterer Aspekt der Programmierbarkeit des Eingabebereichs, der im TextInputPanel-Objekt erheblich verbessert wird, ist das Ereignismodell. Anstatt nur Ereignisse zu auslösen, die eine Änderung im Zustand des Eingabebereichs signalisieren, nachdem die Änderung aufgetreten ist, werden vor und nach der Änderung separate Ereignisse gesendet. Ereignisse, die den Beginn eines Ereignisses signalisieren, enthalten vorhandene tense Verben wie "Ändern" oder "Einfügen", während Ereignisse, die den Abschluss eines Ereignisses signalisieren, Verben der Vergangenheit wie "Geändert" oder "Eingefügt" enthalten.

Dieses Ereignismodell ermöglicht es einer Anwendung, auf eine Änderung vor oder während der Änderung zu reagieren. Der Eingabebereich wird daran gehindert, mit einer Änderung fortzufahren oder nach der Änderung fortzufahren, 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 mit der Reaktion fertig ist. Der Zeitpunkt, zu dem ein Ereignishandler den Eingabebereich ausführt, kann jedoch für den Benutzer nicht zugänglich sein und möglicherweise hängend erscheinen, daher ist es wichtig, dass der Ereignishandler gut funktioniert. Es ist jedoch nicht möglich, dass eine Anwendung ein Ereignis verhindert oder abbricht. Alle Ereignisparameter sind schreibgeschützt. Nachfolgend finden Sie eine Beschreibung der sechs Ereignispaare des TextInputPanel-Objekts :

  • InPlaceStateChanging / InPlaceStateChanged: Benachrichtigung darüber, dass der direkte Zustand im Begriff ist oder gerade von "Hover" zu "erweitert" oder umgekehrt gewechselt ist. Parameter sind der neue und der alte direkte Zustand. Zufälle mit einer Änderung des Werts der CurrentInPlaceState-Eigenschaft .
  • InPlaceSizeChanging / InPlaceSizeChanged: Gibt an, wenn sich die Größe des In-Place Eingabebereichs aufgrund einer Benutzergröße, eines automatischen Wachstums oder einer Eingabebereichsänderung ändert. Parameter sind das neue und alte begrenzungsgebundene Rechteck. Zufälle mit einer Änderung des Werts der InPlaceBoundingRectangle-Eigenschaft .
  • InputAreaChanging / InputAreaChanged: Meldet, wenn sich der Eingabebereich des Eingabebereichs in den anderen der drei möglichen Eingabebereiche ändert oder geändert wurde: Schreibblock, Zeichenblock oder Tastatur. Parameter sind der neue und alte Eingabebereich. Fällt mit einer Änderung des Werts der CurrentInputArea-Eigenschaft zusammen
  • CorrectionModeChanging / CorrectionModeChanged: Benachrichtigung darüber, dass sich der Korrekturmodus ändert oder sich geändert hat. Mögliche Korrekturmodi sind: nicht sichtbar, Pre-Insertion, Post-Insertion reduziert und Post-Insertion erweitert. Parameter sind der neue und der alte Korrekturmodus. Fällt mit einer Änderung des Werts der CurrentCorrectionMode-Eigenschaft zusammen.
  • InPlaceVisibilityChanging / InPlaceVisibilityChanged: Gibt an, wann sich die In-Place Eingabebereich-Sichtbarkeit ändert oder geändert wurde. Parameter sind die neue und alte Sichtbarkeit. Eine neue Sichtbarkeit von false bedeutet, dass der In-Place Eingabebereich nicht geöffnet ist, aber nicht ausschließt, dass der Eingabebereich im Interaktionsmodus "Floating" oder "Docked" angezeigt wird.
  • TextInserting / TextInserted: Gibt an, wann Text eingefügt werden soll oder aus dem Eingabebereich eingefügt wurde. Parameter ist ein Array von InkDisp-Objekten , die jeweils eine Zeile der Freihand- und Textzeile enthalten, aus denen das Einfügen besteht. Weitere Informationen zu diesem Ereignis 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 hin zu einer besseren Interaktion zwischen Anwendungen und Eingabebereich dar.

Unterstützung für das Sammeln von Freihand- und Texteingaben im Eingabebereich

Last but not least, ein sehr leistungsfähiges neues Feature des TextInputPanel-Objekts ist die Möglichkeit, das Freihandobjekt für Text, der über den Eingabebereich eingegeben wurde, aus dem Eingabebereich zu erhalten, wenn der Text in eine Anwendung eingefügt wird. Dies war ein häufig angefordertes Feature für die Änderungsnachverfolgung und Aufzeichnungshaltung. Außerdem können Anwendungen die Freihand auf ihrer Benutzeroberfläche entweder als statisches Element oder mit einer benutzerdefinierten Freihandoberfläche verwenden.

Um das InkDisp-Objekt für Text empfangen zu können, der über den Eingabebereich eingegeben wird, 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 ausgelöst. Der einzige Parameter für das TextInserting - und das 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 möglicherweise für den Benutzer hängen bleiben. Daher ist es wichtig, diese Ereignishandler leicht zu gewichten 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 Freihanddaten nur, wenn eine Anwendung die Daten anfordert. Andernfalls kann der Eingabebereich diesen kostspieligen Vorgang überspringen. Die Parameter der Ereignisse TextInserting und TextInserted sind schreibgeschützt, was bedeutet, dass es für Anwendungen nicht möglich ist, eingefügten Text zu ändern, bevor er in die Anwendung eingefügt wird.

Die Möglichkeiten, was Anwendungen mit dieser neuen Funktionalität tun können, sind breit gefächert und könnten nicht einfacher zu bedienen sein. Zulassen, dass erkannte Texte und Freihandeingaben von Anwendungen erfasst werden können, ist nur eine weitere Möglichkeit, die Entwicklergeschichte des Eingabebereichs in Windows Vista zu verbessern.

Zusammenfassung

Insgesamt wurde die Programmierbarkeit für den Tablet-PC-Eingabebereich mit der Einführung des TextInputPanel-Objekts in Windows Vista erheblich verbessert. Durch die Verwendung des TextInputPanel-Objekts haben Anwendungsentwickler eine größere Kontrolle und mehr Informationen zum Status Eingabebereich in der vorherigen Version. Daher wird Anwendungsentwicklern, die neue Tablet-PC-Anwendungen erstellen oder vorhandene Anwendungen aktualisieren, dringend empfohlen, das TextInputPanel-Objekt anstelle des jetzt 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 der Anwendung, sowohl Erkennungstext als auch Freihandeingaben über den Eingabebereich zu empfangen, neue Anwendungsfunktionen und -szenarien. Die Aufnahme dieser und einiger anderer Features ist eine direkte Reaktion auf Das Feedback der Entwickler und markieren 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.