TextInputPanel dla użytkowników PenInputPanel
Wersja systemu Windows Vista zawiera nowy obiekt programowalności dla panelu wejściowego komputera tabletu, który zapewnia nowy zakres możliwości korzystania z aplikacji i interakcji z panelem wejściowym. Po raz pierwszy deweloperzy aplikacji mogą umieścić In-Place ikonę panelu wejściowego, aby wyrównać je do pola tekstowego lub umieścić go w rogu powierzchni pisma odręcznego klienta, aby zapewnić dostęp do alternatywnego trybu wprowadzania. Deweloperzy mają taką samą kontrolę nad pozycjonowaniem, gdy ikona panelu wejściowego zostanie rozwinięta w panel wejściowy In-Place. Dzięki temu można zapewnić, że In-Place Input Panel nigdy nie nakłada się na kluczowe elementy interfejsu użytkownika w układzie aplikacji, a nawet do zmiany przepływu interfejsu użytkownika aplikacji, aby zapewnić miejsce dla In-Place Input Panel, a następnie umieścić go w przestrzeni zarezerwowanej. Nowy model programowania obejmuje obsługę nie tylko pozycjonowania, ale deweloperzy mogą również dostosować obszar wejściowy, tryb korekty i wiele innych właściwości Panelu wprowadzania, aby dostosować środowisko wprowadzania tekstu w aplikacji. Na koniec po raz pierwszy aplikacja może odbierać atrament użytkownika oprócz rozpoznanego tekstu skojarzonego z wstawianiem tekstu z panelu wejściowego. Umożliwia to korzystanie z nowych scenariuszy aplikacji, w tym pisma oddyskowego w dziennikach śledzenia zmian i umożliwia użytkownikom edytowanie lub wyświetlanie pisma oddyskowego w aplikacji. Te nowe funkcje programowania są bezpośrednim wynikiem opinii firmy Microsoft dotyczących historii deweloperów panelu danych wejściowych i stanowią pierwszy krok w kierunku ściślejszej integracji aplikacji i panelu danych wejściowych.
W celu zapewnienia tego wzbogaconego modelu programowego panelu wejściowego istniejący mechanizm programowego interakcji z panelem wejściowym, obiekt PenInputPanel jest przestarzały i zastępowany przez nowy obiekt TextInputPanel. Oprócz zapewniania nowych funkcji programowych obiekt TextInputPanel zapewnia również blisko wszystkich możliwości programowych obiektu PenInputPanel. Obiekt TextInputPanel znajduje się zarówno w systemie Windows Vista, jak i w zestawie Windows Vista Software Developer Kit. Obiekt TextInputPanel jest zgodny tylko z panelem wejściowym systemu Windows Vista i nie może być używany z dodatkiem Service Pack 2 lub starszym panelem wejściowym systemu Windows XP. Aplikacja, która została wcześniej napisana do korzystania z obiektu PenInputPanel, będzie nadal działać z panelem wejściowym systemu Windows Vista, jednak podczas pisania nowych aplikacji tabletu deweloperzy są zdecydowanie zachęcani do korzystania z nowego obiektu TextInputPanel zamiast przestarzałego obiektu PenInputPanel.
Każda z opcji programowania obiektu TextInputPanel może być stosowana na podstawie pola tekstowego. Jest to realizowane przez dołączenie wystąpienia obiektu TextInputPanel przy użyciu właściwości AttachedEditWindow. Właściwość powinna być ustawiona na uchwyt okna dla pola tekstowego.
Nuta
: Kilka właściwości i metod opisanych poniżej stosuje się, gdy panel danych wejściowych jest w trybie interakcji w miejscu, a nie wtedy, gdy panel wejściowy jest w trybie interakcji przestawnej lub zadokowanej. Tryb interakcji w miejscu to zachowanie panelu wejściowego, w którym umieszczenie fokusu w polu edytowalnym powoduje, że ikona Panelu wprowadzania pojawi się obok pola, a naciśnięcie ikony Panelu wprowadzania powoduje rozwinięcie panelu wejściowego. Metody i właściwości, które mają zastosowanie tylko wtedy, gdy Panel danych wejściowych znajduje się w trybie interakcji w miejscu, zawierają ciąg "InPlace" w nazwie metody lub właściwości.
Sterowanie ikoną panelu wejściowego i widocznością panelu wejściowego
Pierwszym aspektem panelu danych wejściowych, nad którym deweloperzy aplikacji mają większą kontrolę w systemie Windows Vista, jest jego widoczność. Za pomocą obiektu TextInputPanel można kontrolować widoczność In-Place Input Panel na trzy sposoby. Za pomocą kombinacji właściwości i metod aplikacja może określić, czy In-Place Input Panel pokazuje, kiedy In-Place Input Panel pokazuje, i czy jest wyświetlany jako pierwszy jako ikona panelu danych wejściowych, czy natychmiast jest wyświetlany rozwinięty. Łącząc te techniki kontrolowania widoczności za pomocą technik kontrolowania pozycjonowania omówionego w następnej sekcji, deweloperzy aplikacji mogą tworzyć niestandardowe punkty uruchamiania i niestandardowe przepływy pracy przy użyciu In-Place Input Panel w aplikacji.
Nuta
Właściwości i metody omówione w tej sekcji mają zastosowanie tylko wtedy, gdy panel wejściowy jest w trybie interakcji In-Place.
Najpierw i w zasadzie można zapobiec pojawieniu się In-Place Panel wejściowy i ikona panelu wejściowego, ustawiając właściwość InPlaceVisibleOn Focus, aby false. Ustawienie go na wartość true przywraca wartość domyślną systemu, jeśli jest to możliwe, pod warunkiem, że użytkownik lub zasady grupy nie zostały wyłączone. Ta opcja jest przydatna w przypadku aplikacji, które zawierają niestandardowe rozwiązania wprowadzania tekstu jako alternatywę dla panelu wejściowego.
Po drugie, ustawiając właściwość DefaultInPlaceState deweloper może określić stan w miejscu określony przez wyliczenie InPlaceState, In-Place Input Panel pojawia się, gdy fokus zostanie umieszczony w polu tekstowym. Ustawieniem domyślnym systemu jest In-Place Panel wejściowy, który ma być wyświetlany w stanie aktywowania, chyba że panel wejściowy jest już widoczny w stanie rozwiniętym, w tym przypadku panel wejściowy pozostaje rozszerzony. Ustawienie właściwości DefaultInPlaceState na InPlaceState_Expanded powoduje, że In-Place Panel wejściowy będzie zawsze wyświetlany rozwinięty, a nie ikona panelu danych wejściowych wyświetlana jako pierwsza, a następnie wymaganie od użytkownika naciśnięcia ikony Panelu wprowadzania przed rozwinięciem panelu wprowadzania. Pozostałe dwie opcje to InPlaceState_Auto, co jest zachowaniem domyślnym systemu i InPlaceState_HoverTarget, co zawsze powoduje wyświetlenie ikony Panelu danych wejściowych. Możliwość określenia, że In-Place Panel wejściowy zawsze pojawia się rozwinięty, jest nowy z obiektem TextInputPanel i nie jest to możliwe przy użyciu obiektu PenInputPanel. Na poniższej ilustracji przedstawiono ikonę In-Place Panel wejściowy i rozwinięte stany panelu.
Oprócz możliwości kontrolowania stanu w miejscu deweloper może również określić stan w miejscu w danym momencie, uzyskując właściwość CurrentInPlaceState. CurrentInPlaceState jest równa DefaultInPlaceState, gdy panel wejściowy nie jest widoczny, z wyjątkiem sytuacji, gdy DefaultInPlaceState jest InPlaceState_Auto w tym przypadku CurrentInPlaceState staje się InPlaceState_HoverTarget. Zdarzenia InPlaceVisibilityChanging / InPlaceVisibilityChanged mogą służyć do śledzenia stanu widoczności panelu danych wejściowych In-Place.
Na koniec deweloper może wymusić ukrycie lub wyświetlenie In-Place Input Panel przy użyciu metody SetInPlaceVisibility. Jeśli deweloper ustawił wcześniej właściwość DefaultInPlaceState, panel wejściowy pojawi się w określonym stanie, gdy zostanie wymuszone wyświetlenie. Aplikacja może ukrywać lub pokazywać In-Place Panel wejściowy, gdy fokus znajduje się obecnie w oknie obiekt TextInputPanel jest dołączony i gdy użytkownik nie ma panelu wejściowego otwartego w innym trybie interakcji, takim jak zadokowany lub pływający. Możliwość wymuszenia In-Place panelu wejściowego ukrycia lub pokazania jest również nowa z obiektem TextInputPanel i nie jest to możliwe przy użyciu obiektu PenInputPanel.
Te opcje zapewniają deweloperom aplikacji precyzyjną kontrolę nad tym, kiedy pojawi się In-Place Panel wejściowy i w jakim stanie. Dostosowując domyślny stan w miejscu i kontrolując widoczność w miejscu niezależnie od zmian fokusu deweloper aplikacji może utworzyć niestandardowy przepływ pracy, gdy panel wejściowy odpowiada na ustawienia aplikacji lub dane wejściowe użytkownika w aplikacji.
Położenie bezwzględne ikony panelu wejściowego i panelu wejściowego
Prawdopodobnie najbardziej atrakcyjną nową funkcją znalezioną w obiekcie TextInputPanel jest położenie bezwzględne panelu wejściowego In-Place. Dzięki tej nowej możliwości deweloper aplikacji może upewnić się, że In-Place Input Panel nie nakłada się na co najmniej jeden kluczowy element wizualny w układzie aplikacji. Przy użyciu obiektu PenInputPanel można było umieścić In-Place Panelu danych wejściowych względem pola tekstowego na podstawie przesunięcia, jednak panel wejściowy będzie nadal dostosowywać się do zachowania na ekranie. Po raz pierwszy w vista aplikacja może ustawić In-Place Input Panel na pozycji bezwzględnej przy użyciu współrzędnych ekranu. Ponadto odpowiedzialność za utrzymanie panelu danych wejściowych na ekranie jest pozostawiona deweloperowi aplikacji, dlatego usunięcie prawdopodobieństwa, że panel danych wejściowych automatycznie i pozornie losowo zmieni położenie się.
Nuta
Właściwości i metody omówione w tej sekcji mają zastosowanie tylko wtedy, gdy panel wejściowy jest w trybie interakcji In-Place.
Dwie podstawowe metody niezbędne do bezwzględnego pozycjonowania panelu wejściowego In-Place to SetInPlacePosition i SetInPlaceHoverTargetPosition. Pierwszy służy do określania lokalizacji In-Place Panelu danych wejściowych, a drugi służy do określania lokalizacji ikony Panelu danych wejściowych dla panelu wejściowego In-Place. Jeśli aplikacja zdecyduje się ustawić tylko lokalizację Ikona panelu wejściowego, a nie lokalizację panelu wejściowego In-Place, In-Place Panel wejściowy pojawi się w domyślnej lokalizacji określonej przez system. Podobnie jeśli aplikacja zmienia położenie In-Place Panelu danych wejściowych, ale nie ikonę Panelu wprowadzania, ikona Panelu wprowadzania pojawi się w lokalizacji domyślnej. Lokalizacja jest określona we współrzędnych ekranu. Rzeczywisty punkt jest umieszczony w lewym górnym rogu ikony panelu danych wejściowych lub panelu wprowadzania bez rozwiniętego przeczesywania poprawek. Po rozwinięciu poprawki Comb punkt umieszczony nie zmienia się. (Zobacz rysunek 2 poniżej)Nie ma żadnych ograniczeń dotyczących miejsca, w których In-Place Panel wejściowy i In-Place Ikona panelu wejściowego mogą być miejsca i jest to odpowiedzialność aplikacji wywołujących te metody, aby zachować je na ekranie. Obie metody są synchroniczne, co oznacza, że pozycjonowanie występuje przed zwróceniem metody. W przypadku, gdy panel wejściowy jest już otwarty w trybie interakcji pływającej lub zadokowanej, próba położenia In-Place Panelu wejściowego lub ikona panelu wejściowego In-Place kończy się niepowodzeniem. Ponadto metody kończą się niepowodzeniem, jeśli okno dołączone do obiektu TextInputPanel nie ma obecnie fokusu.
Wywołanie polecenia SetInPlacePosition lub SetInPlaceHoverTargetPosition nie powoduje automatycznego ustawienia In-Place Panelu wejściowego lub ikony panelu wejściowego, dlatego po prostu ustawia położenie następnego wyświetlenia. Wywołanie SetInPlaceVisibility może służyć do wymuszenia ich natychmiastowego wyświetlania.
Podczas pozycjonowania In-Place Panelu danych wejściowych obliczanie, czy wyłączy ekran, może być nieco trudne. Aby ułatwić ten proces, istnieje kilka właściwości obiektu TextInputPanel, którego można użyć do uproszczenia tego procesu. Te właściwości i zdarzenia mogą służyć do określenia dokładnego rozmiaru In-Place Panelu danych wejściowych we wszystkich jego stanach:
- InPlaceBoundingRectangle— ta właściwość udostępnia prostokąt ograniczenia dla panelu wejściowego In-Place, gdy wyświetlany jest największy obszar wejściowy dla bieżącego języka wejściowego. Jeśli okienko zapisu lub okienko znaków są określane dla największego obszaru wejściowego, zostanie uwzględniona wysokość przycisku Wstaw. Nie zawiera wysokości przeczesywania poprawek. Po automatycznym zwiększaniu In-Place panelu wprowadzania InPlaceSizeChanging / InPlaceSizeChanged para zdarzeń jest uruchamiana, a wartość tej właściwości zostanie zaktualizowana w celu uwzględnienia dodatkowego obszaru zapisu lub wiersza zapisu.
- PopUpCorrectionHeight— ta właściwość określa wysokość przeczesywania po wstawieniu, gdy znajduje się powyżej panelu wejściowego. Aby uzyskać pełną wysokość panelu danych wejściowych In-Place z wyskakującym kombinacją po wstawieniu, dodaj wysokość InPlaceBoundingRectangle do PopUpCorrectionHeight.
Prostszą alternatywą dla ustawienia położenia bezwzględnego In-Place Panelu wejściowego i ikony panelu wejściowego aplikacja może po prostu określić, czy In-Place Panel wejściowy domyślnie pojawia się powyżej, czy poniżej pola wprowadzania tekstu. W ten sposób można uniknąć nakładających się elementów w układzie aplikacji w bardziej luźno kontrolowany sposób. W tym celu aplikacja ustawia PreferredInPlaceDirection na InPlaceDirection_Bottom lub InPlaceDirection_Top. Właściwość jest preferencją, ponieważ In-Place Input Panel zastępuje preferencje ustawione przez aplikację, gdy jest to konieczne, aby zachować panel danych wejściowych na ekranie. Domyślnym ustawieniem systemu jest położenie In-Place Panelu wejściowego poniżej pola tekstowego, jeśli jest to możliwe, a w przeciwnym razie umieścić go powyżej. Ustawienie PreferredInPlaceDirection na InPlaceDirection_Auto przywraca domyślne ustawienie systemu.
Razem właściwości, metody i zdarzenia TextInputPanel obiektu dają deweloperom niezbędną kontrolę nad In-Place Input Panel, aby móc sprytnie umieścić In-Place Panel wejściowy i Ikona panelu wejściowego w układzie aplikacji, aby nie zakłócać przepływu układu, a w niektórych przypadkach mogą pojawić się zintegrowane. Ten nowy poziom kontroli jest dużym zwycięstwem w projektowaniu aplikacji tabletu.
Dostęp do trzech obszarów panelu wprowadzania: okienko zapisu, okienko znaków i klawiatura
Panel wejściowy ma trzy obszary wejściowe, okienko zapisu, okienko znaków i klawiaturę. Za pomocą obiektu TextInputPanel aplikacja może określić domyślny obszar wejściowy wyświetlany użytkownikowi po otwarciu Panelu danych wejściowych. Głównym powodem, dla którego aplikacja ma to zrobić, jest sparowanie obszaru wejściowego z typem wejściowym określonego pola. Na przykład w okienku pisania najlepiej nadaje się do wypełniania pola komentarzy, ale klawiatura może być wygodniejsza w przypadku wprowadzania numeru seryjnego produktu zawierającego zarówno cyfry, jak i litery. Aby określić domyślny obszar wejściowy, aplikacje ustawiają właściwość DefaultInputArea na jeden z trzech obszarów wejściowych zdefiniowanych przez wyliczenie PanelInputAre a. Na poniższej ilustracji przedstawiono trzy obszary wejściowe.
Domyślnym obszarem wejściowym systemu jest okienko pisania dla języków angielskich, francuskich, niemieckich, hiszpańskich, włoskich, portugalskich, holenderskich i wszystkich innych językach wejściowych w języku łacińskim. W przypadku języków wejściowych Wschodnioazjatyckich, w tym japońskich, chińskich i koreańskich, domyślnym obszarem wejściowym jest okienko znaków. Jednak gdy użytkownik zmieni obszar wejściowy, zastępuje domyślny obszar wejściowy dla bieżącego języka wejściowego i jest przechowywany jako nowy domyślny dla tego języka wejściowego. Klawiatura jest domyślnym obszarem wejściowym dla pól haseł, niezależnie od języka wejściowego, chyba że zabezpieczenia haseł zostały wyłączone przez zasady użytkownika lub grupy. We wszystkich przypadkach ustawienie domyślnego obszaru panelu wejściowego programowo zastępuje wartość domyślną systemu, chyba że bieżące pole jest polem hasła lub rozpoznawaniem pisma ręcznego dla bieżącego języka wejściowego nie obsługuje programowo wybranego obszaru wejściowego. Ustawienie właściwości DefaultInputArea na InPlaceDirection_Auto przywraca ustawienia domyślne systemu.
Niezależnie od tego, czy domyślny obszar panelu danych wejściowych został ustawiony programowo, czy nie, użytkownik ma możliwość zmiany bieżącego obszaru panelu wejściowego po otwarciu panelu wejściowego. Gdy użytkownik zmieni bieżący obszar danych wejściowych, wybór użytkownika będzie się powtarzać, dopóki panel danych wejściowych nie zostanie zamknięty lub użytkownik ponownie zmieni zaznaczenie. Po zamknięciu i ponownym otwarciu panelu danych wejściowych programowo ustaw domyślny obszar wejściowy ponownie.
Ponieważ bieżący obszar panelu wejściowego może się różnić od domyślnego obszaru panelu wejściowego, aplikacja może wysłać zapytanie do właściwości CurrentInputArea, aby określić, który obszar wejściowy jest obecnie widoczny. Jeśli panel wejściowy nie jest obecnie widoczny, bieżący obszar wejściowy jest równy domyślnemu obszarowi wejściowemu. Właściwość CurrentInputArea nigdy nie jest równa PanelInputArea_Auto. Jeśli DefaultInputArea jest równa PanelInputArea_Auto, CurrentInputArea jest równa ostatniemu wyświetlanemu obszarowi wejściowemu lub domyślnemu systemowi dla bieżącego języka wejściowego, jeśli panel wejściowy nigdy nie został wyświetlony.
Podstawową różnicą między obsługą obszaru wejściowego znalezionego w obiekcie PenInputPanel a obiektem TextInputPanel jest fakt, że aplikacja ma teraz możliwość ustawienia domyślnego obszaru wejściowego na okienko znaków, oprócz klawiatury i okienka zapisu.
Przy użyciu powyższych właściwości aplikacja może kontrolować obszar wprowadzania panelu wejściowego wyświetlany w różnych polach i zoptymalizować środowisko wprowadzania tekstu użytkownika. Ponadto aplikacja może zachować świadomość bieżącego obszaru danych wejściowych i podejmować decyzje warunkowe, zgodnie z którymi obszarem wejściowym najlepiej nadaje się do bieżącego zadania użytkownika.
Szczegółowe informacje o trybie interakcji panelu wejściowego
Oprócz możliwości wykrywania bieżącego obszaru wejściowego panelu wejściowego można również wykryć bieżący tryb interakcji: w miejscu, zadokowany lub przestawny. Może być ważne, aby aplikacja znała bieżący tryb interakcji, aby zrozumieć, jak użytkownik wchodzi w interakcję z aplikacją lub ponieważ niektóre metody i właściwości obiektu TextInputPanel mają zastosowanie tylko do trybu interakcji In-Place. Na przykład w aplikacji przepływa istniejące elementy interfejsu użytkownika, a następnie umieszcza In-Place Input Panel nad pustym obszarem w interfejsach użytkownika, aby upewnić się, że bieżący tryb interakcji jest w miejscu przed wprowadzeniem korekt.
Właściwość CurrentInteractionMode obiektu TextInputPanel przechowuje bieżący tryb interakcji wybrany przez użytkownika. Możliwe tryby są definiowane przez InteractionMode wyliczenie jako:
InteractionMode_InPlace— w trybie interakcji In-Place Obok pola wprowadzania tekstu, które ma obecnie fokus. Domyślnie In-Place Ikona panelu wejściowego jest wyświetlana po umieszczeniu punktu wstawiania w polu wprowadzania tekstu. Naciśnięcie ikony Panelu danych wejściowych powoduje rozwinięcie panelu danych wejściowych. Panel wejściowy In-Place jest widoczny tylko wtedy, gdy punkt wstawiania znajduje się w polu edytowalnym.
InteractionMode_Floating — tryb interakcji zmiennoprzecinkowych jest podobny do trybu interakcji InPlace, z wyjątkiem tego, że nie jest powiązany z punktem wstawiania. Panel przestawnych danych wejściowych jest otwierany przez naciśnięcie karty Panel danych wejściowych, która jest domyślnie wyświetlana na lewej krawędzi ekranu. Zarówno pływający panel wejściowy, jak i kartę Panel danych wejściowych można przeciągnąć i zmienić położenie użytkownika. W trybie zmiennoprzecinkowa pozycjonowanie i sterowanie panelem wejściowym jest pozostawione całkowicie użytkownikowi.
InteractionMode_DockedTop — w trybie interakcji Docked-Top Panel wejściowy jest wyświetlany w górnej części ekranu, a rozmiar aktywnego pulpitu jest zmieniany, więc panel wejściowy nie nakłada się na żadne inne okna ani elementy interfejsu użytkownika. W trybie zadokowanego Nie można przeciągać ani przenosić panelu wejściowego.
InteractionMode_DockedBottom — tryb interakcji Docked-Bottom jest taki sam jak tryb Docked-Top, z wyjątkiem panelu wejściowego w dolnej części ekranu.
Gdy panel danych wejściowych nie jest widoczny, bieżący tryb interakcji jest w miejscu.
Publikowanie bieżącego modelu interakcji to inny sposób, w jaki obiekt TextInputPanel zawiera więcej informacji na temat stanu Panelu wejściowego niż był dostępny w dowolnej poprzedniej wersji.
Szczegółowe informacje o trybie korekty panelu wejściowego
Ostatnim aspektem panelu danych wejściowych, który TextInputPanel obiekt zapewnia szczegółowe informacje o trybie korekty i kontroli nad tym. Znajomość trybu korekty pomaga aplikacjom określić bieżący rozmiar panelu wejściowego. Kontrolowanie sposobu rozszerzania poprawki po wstawieniu w aplikacji jest jednym ze sposobów dostosowywania środowiska korekty w aplikacji.
Istnieją dwa podstawowe tryby, w których można wyświetlić poprawkę comb: wstępnego wstawiania i po wstawieniu. Pre-Insertion Correction Comb jest używany do poprawiania tekstu przed wstawieniem go do aplikacji. Jest on aktywowany przez naciśnięcie oczekującego tekstu, który jest wyświetlany poniżej punktu odniesienia w okienku zapisu jako atramentu użytkownika. Przeczesywanie po wstawieniu służy do poprawiania tekstu po wstawieniu do aplikacji. Jest on aktywowany przez umieszczenie punktu wstawiania lub wybranie tekstu, który został wcześniej wstawiony. Poza dwoma podstawowymi trybami istnieje kilka wariantów sposobu wyświetlania przeczesywania po wstawieniu. Najpierw może pojawić się powyżej lub poniżej panelu danych wejściowych, a drugi może pojawić się zwinięty lub rozwinięty. W stanie zwiniętym polecenie Post-Insertion Correction Comb wyświetla tylko listę alternatywnych. W stanie rozwiniętym zawiera zarówno alternatywne, jak i obszar do ponownego zapisania słowa.
Właściwość CurrentCorrectionMode umożliwia aplikacji określenie bieżącej konfiguracji poprawki Comb. Możliwe wartości tej właściwości zdefiniowane przez wyliczenia CorrectionMode to: NotVisible, PreInsertion, PostInsertionCollapsedi PostInsertionExpanded. Jeśli panel wejściowy lub korekta nie jest widoczny, CurrentCorrectionMode jest NotVisible.
Domyślnie system wyświetla po wstawieniu poprawki Comb rozwinięte po zaznaczeniu poprawnego tekstu i pokazuje zwinięty, gdy punkt wstawiania jest umieszczony w poprawnym tekście. Aplikacja może określić miejsce, w którym zawsze powinna być wyświetlana korekta po wstawieniu, ustawiając właściwość ExpandPostInsertionCorrection, aby true. Wartość domyślna systemu to false. Gdy właściwość ExpandPostInsertionCorrection jest używana w połączeniu z interfejsemIHandWrittenTextInsertion, deweloper aplikacji może tanio dodać obsługę poprawek do aplikacji, które nie otrzymają go automatycznie.
Śledzenie i kontrolowanie stanu korekty panelu wejściowego jest jedną z wielu nowych funkcji obiektu TextInputPanel, które zapewniają ściślejszą integrację panelu danych wejściowych i aplikacji.
Powiadomienie o zdarzeniach przed i po wystąpieniu zdarzenia
Innym aspektem programowania panelu wejściowego, który jest znacznie ulepszony w textInputPanel obiektu jest model zdarzeń. Teraz zamiast zgłaszać tylko zdarzenia sygnalizujące zmianę stanu panelu danych wejściowych po wystąpieniu zmiany istnieją oddzielne zdarzenia wysyłane przed i po zmianie. Zdarzenia sygnalizujące początek zdarzenia zawierają czasowniki napięte, takie jak "Zmiana" lub "Wstawianie", podczas gdy zdarzenia sygnalizujące zakończenie zdarzenia zawierają czasowniki z przeszłości, takie jak "Zmienione" lub "Wstawione".
Ten model zdarzeń umożliwia aplikacji reagowanie na zmianę przed lub w miarę jej wystąpienia. Panel wejściowy nie może przejść do zmiany lub wznowienia po zmianie do momentu zakończenia obsługi zdarzeń dla wszystkich zdarzeń. Te zdarzenia są synchroniczne i w ten sposób aplikacja może opóźnić zmianę do momentu zakończenia reagowania. Jednak czas, w którym program obsługi zdarzeń wykonuje panel wejściowy, staje się niedostępny dla użytkownika i może pojawić się zawieszony, dlatego ważne jest, aby program obsługi zdarzeń działał prawidłowo. Nie można jednak zapobiec lub anulować zdarzenia przez aplikację. Wszystkie parametry zdarzenia są tylko do odczytu. Poniżej znajduje się opis sześciu par zdarzeń obiektu TextInputPanel:
- InPlaceStateChanging / InPlaceStateChanged— powiadomienie, że stan w miejscu ma wartość lub właśnie przełączył się z kursora na rozwinięty lub odwrotnie. Parametry są nowym i starym stanem w miejscu. Zbieg okoliczności ze zmianą wartości właściwości CurrentInPlaceState.
- InPlaceSizeChanging / InPlaceSizeChanged— wskazuje, kiedy rozmiar panelu wejściowego In-Place ma ulec zmianie lub został zmieniony z powodu zmiany rozmiaru użytkownika, automatycznego wzrostu lub zmiany obszaru wejściowego. Parametry to nowy i stary prostokąt ograniczenia. Zbieg okoliczności ze zmianą wartości właściwości InPlaceBoundingRectangle.
- InputAreaChanging / InputAreaChanged— raporty, gdy obszar wprowadzania panelu wejściowego danych wejściowych ma ulec zmianie lub został zmieniony z na drugi z trzech możliwych obszarów wejściowych: Okienko zapisu, Okienko znaków lub Klawiatura. Parametry to nowy i stary obszar wejściowy. Zbiega się ze zmianą wartości właściwości CurrentInputArea
- CorrectionModeChanging / CorrectionModeChanged— powiadomienie o zmianie lub zmianie trybu korekty. Możliwe tryby korekty to: niewidoczne, wstępnie wstawione, zwinięte po wstawienie i rozszerzone po wstawieniu. Parametry to nowy i stary tryb korekty. Zbiega się ze zmianą wartości właściwości CurrentCorrectionMode.
- InPlaceVisibilityChanging / InPlaceVisibilityChanged— wskazuje, kiedy widoczność panelu wejściowego In-Place ma ulec zmianie lub uległa zmianie. Parametry to nowa i stara widoczność. Nowa widoczność false oznacza, że panel wejściowy In-Place nie jest otwarty, ale nie wyklucza wyświetlania panelu wejściowego w trybie interakcji Przestawne lub Zadokowane.
- TextInserting / TextInserted— wskazuje, kiedy tekst ma zostać wstawiony lub wstawiony z panelu wejściowego. Parametr jest tablicą obiektów InkDisp, z których każda zawiera wiersz pisma odkowego i tekstu tworzącego wstawienie. Więcej informacji na temat tego zdarzenia znajduje się w następnej sekcji.
Te zdarzenia udostępniają aplikacjom podstawowe informacje o zmianach w panelu danych wejściowych i umożliwiają odpowiednie reagowanie. Ponownie zmiana modelu zdarzeń Panelu danych wejściowych reprezentuje krok w kierunku lepszej interakcji między aplikacjami a panelem wejściowym.
Obsługa zbierania pisma oddyskowego i tekstu wprowadzonego w panelu wprowadzania
Ostatni, ale z pewnością nie tylko, jedna bardzo zaawansowana nowa funkcja obiektu TextInputPanel jest możliwość pobrania obiektu pisma oddyskowego dla tekstu wprowadzonego za pośrednictwem Panelu wprowadzania z panelu wejściowego w momencie wstawienia tekstu do aplikacji. Jest to często żądana funkcja do celów śledzenia zmian i przechowywania rekordów. Umożliwia również aplikacjom korzystanie z pisma odręcznego w interfejsie użytkownika jako elementu statycznego lub niestandardowej powierzchni pisma odręcznego.
Aby otrzymać obiekt InkDisp dla tekstu wprowadzonego za pośrednictwem panelu wejściowego, aplikacja musi zarejestrować się, aby otrzymać TextInserting lub TextInserted zdarzenia wygenerowane przez obiekt TextInputPanel. Zdarzenie TextInserting jest uruchamiane bezpośrednio przed wstawianiem tekstu z panelu wejściowego do aplikacji, a tekst nie zostanie wstawiony do momentu ukończenia wszystkich procedur obsługi zdarzeń. Zdarzenie TextInserted jest uruchamiane natychmiast po wstawieniu testu. Jedynym parametrem dla TextInserting i TextInserted zdarzenie jest tablica obiektów InkDisp, który zawiera jeden obiekt InkDisp dla każdego wiersza tekstu wstawionego z panelu wejściowego. Uwaga: Panel danych wejściowych jest nieaktywny, gdy programy obsługi zdarzeń są uruchomione i mogą wydawać się zawieszone dla użytkownika, dlatego ważne jest, aby te programy obsługi zdarzeń były lekkie i upewnić się, że są one wykonywane szybko. Ponadto aplikacja nie powinna utworzyć programu obsługi dla tego zdarzenia, chyba że ma określone użycie informacji, ponieważ istnieje koszt wydajności związany z tym. Panel wejściowy marshaluje dane pisma odkowego tylko wtedy, gdy istnieje aplikacja żądającą danych. W przeciwnym razie panel danych wejściowych może pominąć tę kosztowną operację. Parametry obu TextInserting i TextInserted zdarzenia są tylko do odczytu, co oznacza, że aplikacje nie mogą zmienić wstawionego tekstu przed wstawieniem do aplikacji.
Możliwości, jakie aplikacje mogą robić z tą nową funkcją, są szerokie i nie mogą być prostsze w użyciu. Zezwalaj na zbieranie rozpoznanego tekstu i pisma odkowego za pośrednictwem panelu wprowadzania danych wejściowych przez aplikacje to kolejny sposób ulepszania historii deweloperów panelu danych wejściowych w systemie Windows Vista.
Konkluzja
Ogólnie rzecz biorąc, historia programowalności dla Tablet PC Input Panel jest znacznie ulepszona wraz z wprowadzeniem TextInputPanel obiektu w systemie Windows Vista. Korzystając z obiektu TextInputPanel, deweloperzy aplikacji mają większą kontrolę i więcej informacji o stanie Input Panel w poprzedniej wersji. W rezultacie deweloperzy aplikacji tworzących nowe aplikacje tabletu lub aktualizujące istniejące aplikacje są zdecydowanie zachęcani do korzystania z obiektu TextInputPanel zamiast obecnie przestarzałego obiektu PenInputPanel. Ponadto obsługa nowych funkcji, takich jak bezwzględne pozycjonowanie Panelu danych wejściowych i ikona Panelu wprowadzania, oraz możliwość odbierania zarówno tekstu rozpoznawania, jak i pisma odręcznego wprowadzonego za pośrednictwem panelu wejściowego, umożliwiają korzystanie z nowych funkcji i scenariuszy aplikacji. Włączenie tych funkcji i kilku innych jest bezpośrednio odpowiedzią na opinie deweloperów i oznacza pierwsze kroki w kierunku pełnej integracji panelu wejściowego z aplikacjami tabletu PC. Ostatecznie rozszerzenie funkcjonalności aplikacji tabletu jest dużym zwycięstwem zarówno dla deweloperów aplikacji, jak i platformy Tablet PC.