Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Version von Windows Vista enthält ein neues Programmierbarkeitsobjekt für das Tablet PC Input Panel, das eine neue Palette von Möglichkeiten für die Verwendung und Interaktion einer Anwendung mit dem Eingabebereich bietet. Zum ersten Mal können Anwendungsentwickler das In-Place Eingabebereichssymbol positionieren, um mit einem Textfeld zu beginnen oder es in der Ecke einer Freihandeingabeoberfläche zu platzieren, um Zugriff auf einen alternativen Eingabemodus zu bieten. Entwickler haben die gleiche Kontrolle über die Positionierung, sobald das Eingabepanelsymbol in den In-Place Eingabebereich erweitert wird. Dies ermöglicht es, sicherzustellen, dass der In-Place Eingabebereich niemals mit wichtigen Benutzeroberflächenelementen im Layout einer Anwendung überlappt oder sogar die Benutzeroberfläche einer Anwendung umgebrochen wird, um Platz für den In-Place Eingabebereich zu schaffen und sie dann im reservierten Bereich zu platzieren. Das neue Programmierbarkeitsmodell umfasst jedoch mehr Unterstützung als nur die Positionierung. Entwickler können auch den Eingabebereich, den Korrekturmodus und viele andere Eigenschaften des Eingabebereichs anpassen, um die Texteingabe in einer Anwendung anzupassen. Schließlich ist es zum ersten Mal möglich, dass eine Anwendung die Freihandeingabe des Benutzers zusätzlich zum erkannten Text empfängt, der mit Texteinfügungen aus dem Eingabebereich verknüpft ist. Dies ermöglicht neue Anwendungsszenarien, einschließlich Freihandeingaben in Änderungsnachverfolgungsprotokollen und das Bearbeiten oder Anzeigen von Freihandeingaben in der Anwendung. Diese neuen Programmierbarkeitsfeatures sind das direkte Ergebnis des Feedbacks, das Microsoft über die Eingabepanel-Entwicklergeschichte erhalten hat und den ersten Schritt zur engeren Integration von Anwendungen und Eingabepanel darstellt.
Um dieses erweiterte Eingabepanel-Programmierbarkeitsmodell für die programmgesteuerte Interaktion mit dem Eingabebereich bereitzustellen, wird das PenInputPanel--Objekt veraltet und durch das neue TextInputPanel-Objekt ersetzt. Neben der Bereitstellung neuer 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 älteren Eingabebereich verwendet werden. Die Anwendung, die zuvor für die Verwendung des PenInputPanel--Objekts geschrieben wurde, funktioniert weiterhin mit dem Windows Vista-Eingabepanel. Wenn Entwickler jedoch neue Tablet-Anwendungen schreiben, wird dringend empfohlen, das neue TextInputPanel--Objekt anstelle des veralteten PenInputPanel--Objekts zu verwenden.
Jede der Programmierbarkeitsoptionen des TextInputPanel--Objekts kann pro Textfeld angewendet werden. Dazu wird eine Instanz des TextInputPanel- Objekts mithilfe der AttachedEditWindow-Eigenschaft angefügt. Die Eigenschaft sollte auf den Fensterziehpunkt für das Textfeld festgelegt werden.
Anmerkung
: Einige der unten beschriebenen Eigenschaften und Methoden gelten, wenn sich der Eingabebereich im direkten Interaktionsmodus befindet und nicht, wenn sich der Eingabebereich im unverankerten oder angedockten Interaktionsmodus befindet. Der direkte Interaktionsmodus ist das Verhalten des Eingabebereichs, bei dem das Platzieren des Fokus in ein bearbeitbares Feld bewirkt, dass das Eingabebereichssymbol neben dem Feld angezeigt wird, und durch Tippen auf das Eingabebereichssymbol 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 Eigenschaftennamen.
Steuerung des Eingabepanelsymbols und der Sichtbarkeit des Eingabebereichs
Der erste Aspekt des Eingabebereichs, über den Anwendungsentwickler in Windows Vista mehr Kontrolle haben, ist seine Sichtbarkeit. Die Verwendung des TextInputPanel- Objekts ist es möglich, die Sichtbarkeit des In-Place Eingabebereichs auf drei Arten zu steuern. Mit einer Kombination von Eigenschaften und Methoden kann eine Anwendung bestimmen, ob der In-Place Eingabebereich angezeigt wird, wenn der In-Place Eingabebereich angezeigt wird und ob es zuerst als Eingabebereichssymbol angezeigt wird oder sofort erweitert angezeigt wird. Durch die Kombination dieser Techniken zum Steuern der Sichtbarkeit mit den Techniken für die Steuerung der Positionierung, die im nächsten Abschnitt erläutert wird, ist es Anwendungsentwicklern möglich, benutzerdefinierte Startpunkte und benutzerdefinierte Arbeitsabläufe mithilfe des In-Place Eingabebereichs in einer Anwendung zu erstellen.
Anmerkung
Die in diesem Abschnitt beschriebenen 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 der In-Place Eingabebereich und das Eingabebereichssymbol jemals angezeigt werden, indem die InPlaceVisibleOnFocus-Eigenschaft auf falsefestgelegt wird. Wenn sie auf "true" festgelegt wird, wird sie auf den Systemstandard zurückgesetzt, wenn dies möglich ist, vorausgesetzt, sie wurde von der Benutzer- oder Gruppenrichtlinie nicht deaktiviert. Diese Option ist nützlich für Anwendungen, die benutzerdefinierte Texteingabelösungen als Alternative zum Eingabebereich enthalten.
Zweitens: Durch Festlegen der DefaultInPlaceState- Eigenschaft kann ein Entwickler angeben, welcher direkte Zustand, wie durch die InPlaceState--Aufzählung angegeben, der In-Place Eingabebereich angezeigt wird, wenn der Fokus in einem Textfeld platziert wird. Der Systemstandard ist, dass der In-Place Eingabebereich im Hoverzustand 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 zuerst das Eingabebereichssymbol anzuzeigen und dann den Benutzer auf das Eingabebereichssymbol zu tippen, bevor der Eingabebereich erweitert wird. Die anderen beiden Optionen sind InPlaceState_Auto, das Systemstandardverhalten und InPlaceState_HoverTarget, wodurch immer das Eingabebereichssymbol angezeigt wird. Die Möglichkeit, anzugeben, dass der In-Place Eingabebereich immer erweitert angezeigt wird, ist neu mit dem TextInputPanel--Objekt und nicht möglich mithilfe des PenInputPanel-Objekts. Die folgende Abbildung zeigt das symbol In-Place Eingabebereich und erweiterte Zustände des Panels.
Neben der Möglichkeit, den direkten Zustand zu steuern, ist es auch möglich, dass ein Entwickler den direkten Zustand zu einem bestimmten Zeitpunkt ermitteln kann, indem die CurrentInPlaceState--Eigenschaft angezeigt wird. Die CurrentInPlaceState- entspricht DefaultInPlaceState-, wenn der Eingabebereich nicht sichtbar ist, außer wenn die DefaultInPlaceState-InPlaceState_Auto ist, in diesem Fall wird die 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 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 Anzeige 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 wenn der Benutzer den Eingabebereich nicht in einem anderen Interaktionsmodus geöffnet hat, z. B. angedockt oder unverankert. Die Möglichkeit, das In-Place Eingabepanel auszublenden oder einblenden zu erzwingen, ist auch neu mit dem TextInputPanel--Objekt und nicht möglich mithilfe des PenInputPanel--Objekts.
Mit diesen Optionen können Anwendungsentwickler genau steuern, wann der In-Place Eingabebereich angezeigt wird und in welchem Zustand. Durch Anpassen des standardinternen Zustands und Steuern der direkten Sichtbarkeit unabhängig von Fokusänderungen kann ein Anwendungsentwickler einen benutzerdefinierten Arbeitsfluss erstellen, wenn Input Panel auf Anwendungseinstellungen oder Benutzereingaben in eine Anwendung reagiert.
Absolute Positionierung des Eingabepanelsymbols und des Eingabebereichs
Möglicherweise ist das überzeugendste neue Feature im TextInputPanel Objekt 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 überlappt. Die Verwendung des PenInputPanel-Objekts war es möglich, den In-Place Eingabebereich relativ zu einem Textfeld basierend auf einem Offset zu positionieren. Der Eingabebereich würde sich jedoch trotzdem anpassen, um auf dem Bildschirm zu bleiben. Zum ersten Mal in Vista kann eine Anwendung den In-Place Eingabebereich an einer absoluten Position mithilfe von Bildschirmkoordinaten positionieren. Darüber hinaus bleibt die Verantwortung, den Eingabebereich auf dem Bildschirm zu behalten, dem Anwendungsentwickler überlassen, sodass die Chance entfernt wird, dass der Eingabebereich automatisch und scheinbar zufällig sich selbst positionieren wird.
Anmerkung
Die in diesem Abschnitt beschriebenen Eigenschaften und Methoden gelten nur, wenn sich der Eingabebereich im In-Place Interaktionsmodus befindet.
Die beiden primären Methoden, die für die absolut Positionierung des In-Place Eingabepanels erforderlich sind, sind SetInPlacePosition und SetInPlaceHoverTargetPosition. Die erste wird verwendet, um die Position des In-Place Eingabebereichs anzugeben, und die zweite wird verwendet, um die Position des Eingabebereichssymbols für den In-Place Eingabebereich anzugeben. Wenn eine Anwendung die Position des Eingabebereichssymbols und nicht die Position des In-Place Eingabebereichs festlegt, wird der In-Place Eingabebereich an der Standardposition angezeigt, die vom System bestimmt wird. 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 Korrekturkomb. Wenn der Korrekturkomb erweitert wird, ändert sich der punkt, der positioniert wird, nicht. (Siehe Abbildung 2 unten)Es gibt keine Einschränkungen, an denen der In-Place Eingabebereich und das In-Place Eingabebereichssymbol platziert werden kann, und es liegt in der Verantwortung der Anwendungen, die diese Methoden aufrufen, um sie auf dem Bildschirm zu halten. Beide Methoden sind synchron, d. h. die Positionierung tritt auf, bevor die Methode zurückgegeben wird. Wenn der Eingabebereich bereits im unverankerten oder angedockten Interaktionsmodus geöffnet ist, schlägt ein Versuch fehl, den In-Place Eingabebereich oder das In-Place Eingabebereichssymbol zu positionieren. Darüber hinaus schlagen die Methoden fehl, wenn das Fenster, das an das TextInputPanel--Objekt angefügt ist, derzeit nicht den Fokus hat.
Ein Aufruf von SetInPlacePosition- oder SetInPlaceHoverTargetPosition- bewirkt nicht automatisch, dass das In-Place Eingabebereichs- oder Eingabebereichssymbol angezeigt wird, es legt einfach die Position für das nächste Mal fest, wenn sie angezeigt werden. Das Aufrufen SetInPlaceVisibility- kann verwendet werden, um zu erzwingen, dass sie sofort angezeigt werden.
Bei der Positionierung des In-Place Eingabebereichs, der berechnet, ob der Bildschirm ausgeschaltet wird, kann ein wenig schwierig sein. Um diesen Prozess zu vereinfachen, gibt es mehrere Eigenschaften des TextInputPanel--Objekts, das verwendet werden kann, 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 Schriftkreuz oder das Zeichenkreuz für den größten Eingabebereich bestimmt ist, wird die Höhe der Schaltfläche "Einfügen" enthalten. Es enthält nicht die Höhe des Korrekturkomb. Wenn der In-Place Eingabebereich automatisch wächst, wird 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ügungskorrekturkomb an, wenn sie über dem Eingabebereich positioniert wird. Fügen Sie die Höhe des InPlaceBoundingRectangle- zum PopUpCorrectionHeighthinzu, um die volle Höhe des Eingabebereichs In-Place mit dem eingeblendeten Einfügekorrektur-Komma zu erhalten.
Als einfachere Alternative zum Festlegen der absoluten Position des In-Place Eingabebereichs- und Eingabepanelsymbols 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 lose kontrollierte Weise zu vermeiden. Dazu legt die Anwendung den PreferredInPlaceDirection- auf InPlaceDirection_Bottom oder InPlaceDirection_Topfest. 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 zu halten. Standardmäßig wird der In-Place Eingabebereich nach Möglichkeit unter einem Textfeld positioniert und andernfalls darüber positioniert. Wenn Sie die PreferredInPlaceDirection- auf InPlaceDirection_Auto wiederherstellen, wird der Systemstandard wiederhergestellt.
Zusammen bieten Entwicklern die Eigenschaften, Methoden und Ereignisse des TextInputPanel--Objekts die erforderliche Kontrolle über das In-Place Eingabepanel, um das In-Place Eingabebereichs- und Eingabepanelsymbol in einem Anwendungslayout zu positionieren, sodass sie den Layoutfluss nicht stören und in einigen Fällen integriert erscheinen können. Diese neue Steuerungsebene ist ein großer Gewinn für das Tablet-Anwendungsdesign.
Zugriff auf die drei Eingabebereichsbereiche: Schriftkreuz, Zeichenblock und Tastatur
Der Eingabebereich verfügt über drei Eingabebereiche, das Schriftkreuz, das Zeichenkreuz und die Tastatur. Mithilfe des 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 Schriftkreuz wahrscheinlich am besten zum Ausfüllen eines Kommentarfelds, aber die Tastatur eignet sich möglicherweise besser für die Eingabe einer Produkt-Seriennummer, die sowohl Zahlen als auch Buchstaben enthält. Um den Standardeingabebereich anzugeben, legt eine Anwendung die DefaultInputArea--Eigenschaft auf einen der drei Eingabebereiche fest, wie durch die PanelInputArea- Enumeration definiert. Die folgende Abbildung zeigt die drei Eingabebereiche.
Der Standardeingabebereich des Systems ist das Schriftkreuz 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 Zeichenkreuz. 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 von der Benutzer- oder Gruppenrichtlinie deaktiviert. In allen Fällen wird beim programmgesteuerten Festlegen des Standardeingabebereichs der Systemstandard außer Kraft gesetzt, es sei denn, das aktuelle Feld ist ein Kennwortfeld oder die Handschrifterkennung für die aktuelle Eingabesprache unterstützt den programmgesteuerten Eingabebereich nicht. Wenn Sie die eigenschaft DefaultInputArea auf InPlaceDirection_Auto wiederherstellen, 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 Eingabebereich nach dem Öffnen des Eingabebereichs zu ändern. 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. Nach dem Schließen und erneuten Öffnen des Eingabebereichs wird der standardmäßige Eingabebereich erneut angezeigt.
Da sich der aktuelle Eingabepanelbereich möglicherweise von dem Standardeingabebereich 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 eigenschaft CurrentInputArea ist nie gleich PanelInputArea_Auto. Wenn die DefaultInputArea- gleich PanelInputArea_Autoist, entspricht die CurrentInputArea- dem letzten angezeigten Eingabebereich oder dem Systemstandard für die aktuelle Eingabesprache, wenn der Eingabebereich noch nie angezeigt wurde.
Der Hauptunterschied zwischen der Unterstützung des Eingabebereichs im PenInputPanel--Objekt und der des TextInputPanel--Objekts ist die Tatsache, dass die Anwendung jetzt die Möglichkeit hat, den Standardeingabebereich neben dem Schriftkreuz und der Tastatur auf das Zeichenkreuz festzulegen.
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 das Bewusstsein für den aktuellen Eingabebereich behalten und bedingte Entscheidungen treffen, nach denen der Eingabebereich am besten für die aktuelle Benutzeraufgabe geeignet ist.
Detaillierte Informationen zum Interaktionsmodus des Eingabepanels
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 kennen muss, entweder um zu verstehen, wie der Benutzer mit der Anwendung interagiert oder weil einige Methoden und Eigenschaften des TextInputPanel Objekt nur auf den In-Place Interaktionsmodus angewendet werden. In der Anwendung werden beispielsweise vorhandene Benutzeroberflächenelemente umgebrochen und dann die In-Place Eingabebereich über einen leeren Bereich in den Benutzeroberflächen positioniert, um sicherzustellen, dass der aktuelle Interaktionsmodus vor der Anpassung vorhanden ist.
Die CurrentInteractionMode--Eigenschaft des TextInputPanel--Objekts speichert den aktuellen Interaktionsmodus, wie vom Benutzer ausgewählt. Die möglichen Modi werden durch die InteractionMode- Enumeration definiert als:
InteractionMode_InPlace– Im Eingabebereich für den In-Place Interaktionsmodus wird neben dem Texteingabefeld angezeigt, das derzeit den Fokus besitzt. Standardmäßig wird das In-Place Eingabebereichssymbol angezeigt, wenn eine Einfügemarke in einem Texteingabefeld platziert wird. Durch Tippen auf das Eingabebereichssymbol wird der Eingabebereich erweitert. Der In-Place Eingabebereich ist nur sichtbar, wenn sich eine Einfügemarke in einem bearbeitbaren Feld befindet.
InteractionMode_Floating – Der Unverankerte Interaktionsmodus ähnelt dem InPlace-Interaktionsmodus, mit der Ausnahme, dass er nicht an eine Einfügemarke gebunden ist. Der unverankerte Eingabebereich wird geöffnet, indem sie auf die Registerkarte "Eingabebereich" tippen, die standardmäßig am linken Rand des Bildschirms angezeigt wird. Sowohl die Registerkarte "Unverankerter Eingabebereich" als auch "Eingabebereich" können vom Benutzer gezogen und neu positioniert werden. Die Positionierung und Steuerung des Eingabebereichs im unverankerten Modus bleibt dem Benutzer überlassen.
InteractionMode_DockedTop – Im Docked-Top Interaktionsmodus-Eingabebereich wird oben auf dem Bildschirm angezeigt, und die Größe des aktiven Desktops wird geändert, sodass der Eingabebereich nicht mit anderen Fenstern oder UI-Elementen überlappt. Im angedockten Modus kann der Eingabebereich nicht gezogen oder verschoben werden.
InteractionMode_DockedBottom – Der Docked-Bottom Interaktionsmodus ist identisch mit dem Docked-Top Modus, außer der Eingabebereich wird unten auf dem Bildschirm angezeigt.
Wenn der Eingabebereich nicht sichtbar ist, ist der aktuelle Interaktionsmodus an der Stelle.
Das Veröffentlichen des aktuellen Interaktionsmodells ist eine andere Möglichkeit, wie das TextInputPanel--Objekt mehr Informationen zum Status des Eingabebereichs bereitstellt, als in jeder früheren Version verfügbar war.
Detaillierte Informationen zum Korrekturmodus des Eingabebereichs
Der letzte Aspekt des Eingabebereichs, über den das TextInputPanel--Objekt Ihnen detaillierte Informationen und Kontrolle gibt, ist der Korrekturmodus.The final aspect of input Panel that the TextInputPanel object gives you detailed information about and control of is the correction mode. Wenn Sie den Korrekturmodus kennen, können Anwendungen die aktuelle Größe des Eingabebereichs ermitteln. Die Steuerung, wie die Korrektur nach der Einfügekorrektur in einer Anwendung erweitert wird, ist eine Möglichkeit, die Korrekturerfahrung in einer Anwendung anzupassen.
Es gibt zwei grundlegende Modi, in denen der Korrekturkomb angezeigt werden kann: Voreinfügung und Nacheinfügung. Der Korrekturkomb vor der Einfügekorrektur wird verwendet, um Text zu korrigieren, bevor er in eine Anwendung eingefügt wird. Er wird aktiviert, indem er auf den ausstehenden Text tippt, der unter dem Basisplan im Schreibblock als Druckfarben angezeigt wird. Der Nacheinfügungskorrekturkomb wird verwendet, um Text zu korrigieren, nachdem er in eine Anwendung eingefügt wurde. Es wird aktiviert, indem die Einfügemarke in den zuvor eingefügten Text eingefügt oder markiert wird. Über die beiden grundlegenden Modi hinaus gibt es mehrere Variationen, wie der Nacheinfügungskomb angezeigt werden kann. Zuerst kann es über oder unterhalb des Eingabebereichs angezeigt werden, und zweitens kann er reduziert oder erweitert angezeigt werden. Im reduzierten Zustand zeigt das Komb nach der Einfügekorrektur nur eine Liste mit Alternativen an. Im erweiterten Zustand enthält es sowohl die Alternativen als auch einen Bereich zum Umschreiben des Worts.
Mit der CurrentCorrectionMode--Eigenschaft kann eine Anwendung die aktuelle Konfiguration des Korrekturkomb ermitteln. Die möglichen Werte dieser Eigenschaft, wie durch die CorrectionMode- Enumerationen definiert sind: NotVisible, PreInsertion, PostInsertionCollapsedund PostInsertionExpanded. Wenn kein Eingabebereich oder Korrekturkomb sichtbar ist, ist die CurrentCorrectionMode-NotVisible.
Standardmäßig zeigt das System den Nacheinfügekorrekturkomb erweitert an, wenn der markierte korrekturfähige Text markiert wird und reduziert angezeigt wird, wenn die Einfügemarke in korrekten Text gesetzt wird. Eine Anwendung kann angeben, wo der Nacheinfügekorrekturkomb immer erweitert angezeigt werden soll, indem die ExpandPostInsertionCorrection-eigenschaft auf truefestgelegt wird. Der Systemstandard ist false. Wenn die ExpandPostInsertionCorrection-Eigenschaft in Verbindung mit der IHandWrittenTextInsertion Schnittstelle verwendet wird, kann ein Anwendungsentwickler billig Korrekturunterstützung zu Anwendungen hinzufügen, die ihn nicht automatisch erhalten würden.
Das Nachverfolgen und Steuern des Korrekturzustands des Eingabebereichs ist eines der vielen neuen Features des TextInputPanel- Objekts, das eine engere Eingabepanel- und Anwendungsintegration ermöglicht.
Ereignisbenachrichtigung vor und nach 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 auslösen, die eine Änderung des Zustands des Eingabebereichs signalisieren, nachdem die Änderung aufgetreten ist, werden separate Ereignisse vor und nach dem Auftreten der Änderung gesendet. Ereignisse, die den Beginn eines Ereignisses signalisieren, enthalten präzierende Verben wie "Changing" oder "Inserting", während Ereignisse, die den Abschluss eines Ereignisses signalisieren, vergangene tense Verben wie "Changed" oder "Insert" enthalten.
Dieses Ereignismodell ermöglicht es einer Anwendung, auf eine Änderung vor oder während des Auftretens 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 reagiert hat. Der Zeitpunkt, zu dem ein Ereignishandler jedoch den Eingabebereich ausführt, kann für den Benutzer nicht zugänglich sein und kann hängen bleiben, 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, dass der direkte Zustand gerade von Hover zu erweitert oder umgekehrt gewechselt ist. Parameter sind der neue und alte in-situ-Zustand. Zufallen mit einer Änderung des Werts der CurrentInPlaceState-Eigenschaft.
- InPlaceSizeChanging / InPlaceSizeChanged– Gibt an, wann die Größe des In-Place Eingabebereichs aufgrund einer Änderung der Größe eines Benutzers, eines automatischen Wachstums oder einer Änderung eines Eingabebereichs geändert wird. Parameter sind das neue und alte umgebende Rechteck. Zufallen mit einer Änderung des Werts der InPlaceBoundingRectangle-Eigenschaft.
- InputAreaChanging / InputAreaChanged– Meldet, wann der Eingabebereich des Eingabebereichs im Eingabebereich geändert werden soll oder von den anderen der drei möglichen Eingabebereiche geändert wurde: Schreibpad, Zeichenkreuz oder Tastatur. Parameter sind der neue und alte Eingabebereich. Fällt mit einer Änderung des Werts der CurrentInputArea-Eigenschaft zusammen.
- CorrectionModeChanging / CorrectionModeChanged– Benachrichtigung, dass der Korrekturmodus gerade geändert werden soll oder geändert wurde. Mögliche Korrekturmodi sind: nicht sichtbar, Pre-Insertion, Post-Insertion collapsed, and Post-Insertion expanded. Parameter sind der neue und alte Korrekturmodus. Fällt mit einer Änderung des Werts der CurrentCorrectionMode-Eigenschaft zusammen.
- InPlaceVisibilityChanging / InPlaceVisibilityChanged– Gibt an, wann die Sichtbarkeit des In-Place Eingabebereichs sich ändern oder geändert hat. Parameter sind die neue und alte Sichtbarkeit. Eine neue Sichtbarkeit von false bedeutet, dass der In-Place Eingabebereich nicht geöffnet ist, schließt jedoch nicht aus, dass der Eingabebereich im Interaktionsmodus "Unverankert" oder "Angedockt" angezeigt wird.
- TextInserting / TextInserted– Gibt an, wann Text eingefügt oder aus dem Eingabebereich eingefügt wurde. Der Parameter ist ein Array von InkDisp -Objekten, die jeweils eine Zeile der Freihand und Text enthalten, aus denen die Einfügemarke besteht. Weitere Informationen zu diesem Ereignis im nächsten Abschnitt.
Diese Ereignisse bieten Anwendungen wichtige Informationen zu Änderungen im Eingabebereich und ermöglichen es ihnen, entsprechend zu reagieren. Auch hier stellt die Änderung des Eingabepanel-Ereignismodells einen Schritt in Richtung einer besseren Interaktion zwischen Anwendungen und Eingabebereich dar.
Unterstützung für das Sammeln von Freihand und Text, der in den Eingabebereich eingegeben wurde
Zuletzt aber nicht zuletzt ist ein sehr leistungsfähiges neues Feature des TextInputPanel--Objekts die Möglichkeit, das Freihandobjekt für Text abzurufen, der über den Eingabebereich aus dem Eingabebereich eingegeben wird, wenn der Text in eine Anwendung eingefügt wird. Dies war ein häufig angefordertes Feature zum Zweck der Änderungsnachverfolgung und Datensatzhaltung. Außerdem können Anwendungen die Freihandeingabe in ihrer Benutzeroberfläche entweder als statisches Element oder mit einer benutzerdefinierten Freihandoberfläche verwenden.
Um das InkDisp-Objekt für Text zu empfangen, der über den Eingabebereich eingegeben wurde, muss eine Anwendung registrieren, um das TextInserting oder TextInserted Ereignisse zu empfangen, die vom TextInputPanel--Objekt generiert werden. Das TextInserting-Ereignis wird sofort ausgelöst, bevor Text aus dem Eingabebereich in eine Anwendung eingefügt wird und der Text erst eingefügt wird, wenn alle Ereignishandler abgeschlossen sind. Das TextInserted Ereignis wird unmittelbar nach dem Einfügen des Tests ausgelöst. Der einzige Parameter für das TextInserting und TextInserted-Ereignis ist ein Array von InkDisp--Objekten, die ein InkDisp-Objekt für jede Textzeile enthalten, die aus dem Eingabebereich eingefügt wurde. Hinweis: Der Eingabebereich ist inaktiv, während die Ereignishandler ausgeführt werden und dem Benutzer möglicherweise hängend angezeigt werden. Daher ist es wichtig, diese Ereignishandler leicht gewichtet 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 dies zu leistungseinbußen kommt. Der Eingabebereich marshallt nur die Freihanddaten, wenn eine Anwendung die Daten anfordert, andernfalls kann der Eingabebereich diesen kostspieligen Vorgang überspringen. Die Parameter der TextInserting und TextInserted Ereignisse sind schreibgeschützt, was bedeutet, dass anwendungen eingefügten Text nicht ändern können, bevor sie in die Anwendung eingefügt wird.
Die Möglichkeiten, was Anwendungen mit dieser neuen Funktionalität tun können, sind breit gefächert und konnten nicht einfacher zu verwenden sein. Zulassen, dass erkannter Text und Freihandeingaben, die über den Eingabebereich eingegeben werden, von Anwendungen erfasst werden können, ist nur eine andere Möglichkeit, wie die Entwicklergeschichte des Eingabepanels in Windows Vista verbessert wird.
Schlussfolgerung
Insgesamt wird die Programmierbarkeit für das Tablet PC Input Panel durch die Einführung des TextInputPanel--Objekts in Windows Vista erheblich verbessert. Mithilfe des TextInputPanel--Objekts haben Anwendungsentwickler eine größere Kontrolle und weitere Informationen zum Zustandseingabebereich in der vorherigen Version. Daher werden Anwendungsentwickler, 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 das Eingabebereichssymbol sowie die Möglichkeit der Anwendung, sowohl Erkennungstext als auch Freihandeingaben zu empfangen, die über den Eingabebereich eingegeben werden, neue Anwendungsfunktionen und Szenarien. Die Einbeziehung dieser Features und mehrerer anderer Features erfolgt direkt auf Entwicklerfeedback und markieren die ersten Schritte zur vollständigen Integration des Eingabepanels 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.