TextInputPanel för användare av PenInputPanel
Lanseringen av Windows Vista innehåller ett nytt programmeringsobjekt för Tablet PC-indatapanelen som ger en ny uppsättning möjligheter för hur ett program kan använda och interagera med indatapanelen. För första gången kan programutvecklare placera ikonen In-Place indatapanel för att rada upp med en textruta eller placera den i hörnet på en kunds pennanteckningsyta för att ge åtkomst till ett alternativt indataläge. Utvecklare har samma kontroll över positionering när ikonen för indatapanelen har expanderats till In-Place indatapanelen. Detta gör det möjligt att säkerställa att In-Place indatapanelen aldrig överlappar viktiga användargränssnittselement i ett programs layout eller till och med att flöda om ett programs användargränssnitt för att göra plats för In-Place indatapanelen och sedan placera den i det reserverade utrymmet. Den nya programmeringsmodellen innehåller stöd för mer än bara positionering, men utvecklare kan också anpassa indataområdet, korrigeringsläget och många andra egenskaper i inmatningspanelen för att skräddarsy textinmatningsupplevelsen i ett program. Slutligen är det för första gången möjligt för ett program att ta emot användarbläck, förutom den identifierade texten, som är associerad med textinfogningar från inmatningspanelen. Detta möjliggör nya programscenarier, inklusive pennanteckningar i ändringsspårningsloggar och tillåter användare att redigera eller visa pennanteckningar i programmet. Dessa nya programmeringsfunktioner är det direkta resultatet av feedback som Microsoft har fått om utvecklarberättelsen för indatapanelen och utgör det första steget mot en striktare integrering av program och indatapanelen.
För att ge den här berikade indatapanelen programmeringsmodell den befintliga mekanismen för programmatiskt interagera med indatapanelen, PenInputPanel objekt, föråldrades och ersätts av den nya TextInputPanel-objektet. Förutom att tillhandahålla nya programmeringsfunktioner ger TextInputPanel-objektet också nära alla programmatiska funktioner i objektet PenInputPanel. Objektet TextInputPanel ingår i både Windows Vista och Windows Vista Software Developer Kit. Objektet TextInputPanel är endast kompatibelt med Windows Vista-indatapanelen och kan inte användas med Indatapanelen för Windows XP Service Pack 2 eller äldre. Program som tidigare skrivits för att använda PenInputPanel-objektet fortsätter att fungera med Windows Vista-indatapanelen, men när du skriver nya Tablet-program uppmanas utvecklare starkt att använda det nya TextInputPanel-objektet i stället för det inaktuella PenInputPanel-objektet.
Var och en av programmeringsalternativen för TextInputPanel-objektet kan tillämpas per textfält. Detta uppnås genom att koppla en instans av objektet TextInputPanel med egenskapen AttachedEditWindow. Egenskapen ska vara inställd på fönsterhandtaget för textfältet.
Not
: Flera av de egenskaper och metoder som beskrivs nedan gäller när indatapanelen är i interaktionsläget på plats och inte när indatapanelen är i flytande eller dockat interaktionsläge. Interaktionsläget på plats är beteendet för indatapanelen där fokus i ett redigerbart fält gör att ikonen för indatapanelen visas bredvid fältet, och om du trycker på ikonen för inmatningspanelen expanderas indatapanelen. De metoder och egenskaper som endast gäller när indatapanelen är i interaktionsläget på plats innehåller alla "InPlace" i metoden eller egenskapsnamnet.
Kontroll av ikonen för inmatningspanelen och synlighet för indatapanelen
Den första aspekten av indatapanelen som programutvecklare har mer kontroll över i Windows Vista är dess synlighet. Med hjälp av TextInputPanel-objektet går det att kontrollera synligheten för In-Place indatapanelen på tre sätt. Med en kombination av egenskaper och metoder kan ett program avgöra om In-Place indatapanelen visas, när den In-Place indatapanelen visas och om den visas först som ikonen för indatapanelen eller om den visas omedelbart expanderad. Genom att kombinera dessa tekniker för att kontrollera synligheten med de tekniker för att kontrollera positionering som beskrivs i nästa avsnitt är det möjligt för programutvecklare att skapa anpassade startpunkter och anpassade arbetsflöden med hjälp av In-Place indatapanelen i ett program.
Not
De egenskaper och metoder som beskrivs i det här avsnittet gäller endast när indatapanelen är i In-Place interaktionsläge.
Först och främst är det möjligt att förhindra att In-Place indatapanelen och ikonen för indatapanelen någonsin visas genom att ange egenskapen InPlaceVisibleOnFocus till falskt. Om du ställer in den på sant återgår den till systemets standardinställning för att visas när det är möjligt, förutsatt att det inte har inaktiverats av användaren eller grupprincipen. Det här alternativet är användbart för program som innehåller anpassade textinmatningslösningar som ett alternativ till indatapanelen.
För det andra, genom att ange egenskapen DefaultInPlaceState en utvecklare kan ange vilket tillstånd på plats som anges av InPlaceState uppräkning, visas In-Place indatapanelen i när fokus placeras i ett textfält. Systemets standardinställning är att den In-Place indatapanelen ska visas i hovringstillståndet om inte indatapanelen redan är synlig i det expanderade tillståndet, i vilket fall indatapanelen förblir expanderad. Om du anger egenskapen DefaultInPlaceState till InPlaceState_Expanded visas alltid In-Place indatapanel, i stället för att ikonen för inmatningspanelen visas först och sedan kräver att användaren trycker på ikonen för inmatningspanelen innan inmatningspanelen expanderas. De andra två alternativen är InPlaceState_Auto, vilket är systemets standardbeteende och InPlaceState_HoverTarget som alltid gör att ikonen för indatapanelen visas. Möjligheten att ange att In-Place indatapanelen alltid visas som expanderad är ny med TextInputPanel-objektet och inte möjligt med hjälp av objektet PenInputPanel. Följande bild visar ikonen In-Place indatapanelen och expanderade tillstånd i panelen.
Förutom att kunna kontrollera tillståndet på plats är det också möjligt för en utvecklare att fastställa tillståndet på plats vid en viss tidpunkt genom att hämta egenskapen CurrentInPlaceState. CurrentInPlaceState- är lika med DefaultInPlaceState när indatapanelen inte visas, förutom när DefaultInPlaceState-InPlaceState_Auto i vilket fall CurrentInPlaceState- blir InPlaceState_HoverTarget. Händelserna InPlaceVisibilityChanging / InPlaceVisibilityChanged kan användas för att hålla reda på In-Place indatapanelens synlighetstillstånd.
Slutligen kan en utvecklare tvinga In-Place indatapanelen att dölja eller visa med hjälp av metoden SetInPlaceVisibility. Om utvecklaren tidigare har angett egenskapen DefaultInPlaceState visas indatapanelen i det angivna tillståndet när den tvingas visa den. Ett program får bara dölja eller visa In-Place indatapanelen när fokus för närvarande är i fönstret TextInputPanel objektet är kopplat till och när användaren inte har indatapanelen öppen i ett annat interaktionsläge, till exempel dockat eller flytande. Möjligheten att tvinga In-Place indatapanelen att dölja eller visa är också ny med objektet TextInputPanel och inte möjligt med hjälp av objektet PenInputPanel.
De här alternativen ger programutvecklare detaljerad kontroll över när In-Place indatapanelen visas och i vilket tillstånd. Genom att anpassa standardtillståndet på plats och styra synligheten på plats oberoende av fokusändringar kan en programutvecklare skapa ett anpassat arbetsflöde när indatapanelen svarar på antingen programinställningar eller användarindata i ett program.
Absolut placering av ikonen för inmatningspanelen och indatapanelen
Den kanske mest övertygande nya funktionen som finns i TextInputPanel-objektet är absolut positionering av In-Place indatapanelen. Med den här nya funktionen kan en programutvecklare se till att den In-Place indatapanelen inte överlappar ett eller flera viktiga visuella element i en programlayout. Med hjälp av PenInputPanel-objektet var det möjligt att placera In-Place indatapanelen i förhållande till ett textfält baserat på en förskjutning, men indatapanelen skulle fortfarande justera sig för att hålla sig på skärmen. För första gången i Vista kan ett program placera In-Place indatapanelen på en absolut position med hjälp av skärmkoordinater. Dessutom lämnas ansvaret för att behålla indatapanelen på skärmen till programutvecklaren, vilket tar bort risken för att indatapanelen automatiskt, och till synes slumpmässigt, flyttar sig själv.
Not
De egenskaper och metoder som beskrivs i det här avsnittet gäller endast när indatapanelen är i In-Place interaktionsläge.
De två primära metoder som krävs för att absolut placera In-Place indatapanelen är SetInPlacePosition och SetInPlaceHoverTargetPosition. Den första används för att ange platsen för In-Place indatapanelen och den andra används för att ange platsen för ikonen för indatapanelen för In-Place indatapanelen. Om ett program väljer att endast ange ikonplatsen för indatapanelen och inte platsen för In-Place indatapanelen visas In-Place indatapanelen på den standardplats som bestäms av systemet. På samma sätt visas ikonen för indatapanelen på standardplatsen om ett program flyttar In-Place indatapanelen men inte ikonen för indatapanelen. Plats anges i skärmkoordinater. Den faktiska punkten som placeras är det övre vänstra hörnet på ikonen för inmatningspanelen eller indatapanelen utan att korrigeringskammen har expanderats. När korrigeringskammen expanderas ändras inte den punkt som placeras. (Se bild 2 nedan)Det finns inga begränsningar för var In-Place indatapanelen och ikonen In-Place indatapanelen kan finnas och det är program som anropar dessa metoder för att hålla dem på skärmen. Båda metoderna är synkrona, vilket innebär att positionering sker innan metoden returneras. Om indatapanelen redan är öppen i det flytande eller dockade interaktionsläget misslyckas ett försök att placera In-Place indatapanelen eller ikonen In-Place indatapanelen. Dessutom misslyckas metoderna om det fönster som är kopplat till TextInputPanel-objektet för närvarande inte har fokus.
Ett anrop till SetInPlacePosition eller SetInPlaceHoverTargetPosition inte automatiskt gör att ikonen In-Place indatapanel eller indatapanel visas, utan anger helt enkelt positionen för nästa gång de visas. Anropa SetInPlaceVisibility kan användas för att tvinga dem att visas omedelbart.
När du placerar In-Place indatapanelen som beräknar om den kommer att gå av skärmen kan det vara lite knepigt. För att göra den här processen enklare finns det flera egenskaper för TextInputPanel objekt som kan användas för att förenkla den här processen. Tillsammans kan dessa egenskaper och händelser användas för att fastställa den exakta storleken på den In-Place indatapanelen i alla dess tillstånd:
- InPlaceBoundingRectangle– Den här egenskapen tillhandahåller avgränsningsrektangeln för In-Place indatapanelen när det största indataområdet för det aktuella indataspråket visas. Om skrivblocket eller teckenblocket bestäms till det största indataområdet inkluderas höjden på knappen Infoga. Den innehåller inte höjden på korrigeringskammen. När In-Place indatapanelen växer automatiskt ut utlöses InPlaceSizeChanging / InPlaceSizeChanged händelsepar och värdet för den här egenskapen uppdateras så att det inkluderar ytterligare skrivyta eller skrivrad.
- PopUpCorrectionHeight– Den här egenskapen anger höjden på korrigeringskammen efter infogningen när den placeras ovanför indatapanelen. Om du vill få den fullständiga höjden på In-Place indatapanelen med post-insertion Correction Comb popped-up lägger du till höjden på InPlaceBoundingRectangle till PopUpCorrectionHeight.
Som ett enklare alternativ till att ange den absoluta positionen för In-Place indatapanelen och ikonen för indatapanelen kan ett program bara ange om In-Place indatapanelen som standard visas ovanför eller under ett textpostfält. På så sätt kan du undvika överlappande element i programlayouten på ett mer löst kontrollerat sätt. För att göra detta anger programmet PreferredInPlaceDirection till InPlaceDirection_Bottom eller InPlaceDirection_Top. Egenskapen är en inställning eftersom den In-Place indatapanelen åsidosätter inställningen som angetts av programmet när det behövs för att hålla indatapanelen på skärmen. Systemets standardinställning är att placera In-Place indatapanelen under ett textfält när det är möjligt och annars placera den ovan. Om du anger PreferredInPlaceDirection till InPlaceDirection_Auto återställs systemets standardinställning.
Tillsammans ger egenskaperna, metoderna och händelserna i TextInputPanel-objektet utvecklare nödvändig kontroll över In-Place indatapanelen för att kunna placera In-Place indatapanelen och indatapanelikonen i en programlayout så att de inte stör layoutflödet och i vissa fall kan verka integrerade. Den här nya kontrollnivån är en stor vinst för tablet-programdesignen.
Åtkomst till de tre indatapanelsområdena: Skrivblock, teckenplatta och tangentbord
Inmatningspanelen har tre indataområden, skrivblocket, teckenblocket och tangentbordet. Med hjälp av TextInputPanel-objektet kan ett program ange det standardindataområde som visas för användaren när indatapanelen öppnas. Den främsta orsaken till att ett program gör det är att koppla indataområdet till indatatypen för det specifika fältet. Skrivblocket passar förmodligen bäst för att fylla i ett kommentarsfält, men tangentbordet kan vara enklare att ange ett produktserienummer som innehåller både siffror och bokstäver. För att ange standardindataområdet anger ett program egenskapen DefaultInputArea till ett av de tre indataområden som definieras av PanelInputArea uppräkning. Följande bild visar de tre indataområdena.
Systemets standardindataområde är skrivblocket för engelska, franska, tyska, spanska, italienska, portugisiska, nederländska och alla andra latinska indataspråk. För östasiatiska indataspråk, inklusive japanska, kinesiska och koreanska, är standardindataområdet teckenblocket. Men när användaren ändrar indataområdet åsidosätter den standardindataområdet för det aktuella indataspråket och lagras som den nya standardinställningen för det indataspråket. Tangentbordet är standardinmatningsområdet för lösenordsfält, oavsett indataspråk, såvida inte lösenordssäkerhet har inaktiverats av användaren eller grupprincipen. I samtliga fall åsidosätter inställning av standardinmatningspanelens område systemstandarden programmatiskt, såvida inte det aktuella fältet är ett lösenordsfält eller handskriftsigenkänningen för det aktuella indataspråket inte stöder det programmatiskt valda indataområdet. Om du ställer in egenskapen DefaultInputArea till InPlaceDirection_Auto återställs systemets standardinställningar.
Oavsett om standardområdet för indatapanelen har angetts programmatiskt eller inte, har användaren möjlighet att ändra det aktuella indatapanelens område när indatapanelen är öppen. När användaren har ändrat det aktuella indataområdet bevaras användarvalet tills indatapanelen stängs eller användaren ändrar markeringen igen. När indatapanelen har stängts och öppnats igen visas standardinmatningsområdet programmatiskt.
Eftersom det aktuella området på indatapanelen kan skilja sig från standardområdet för indatapanelen kan ett program fråga egenskapen CurrentInputArea för att avgöra vilket indataområde som för närvarande är synligt. Om indatapanelen inte visas för närvarande är det aktuella indataområdet lika med standardinmatningsområdet. Egenskapen CurrentInputArea är aldrig lika med PanelInputArea_Auto. Om DefaultInputArea- är lika med PanelInputArea_Autoär CurrentInputArea- lika med det sista indataområdet som visas eller systemets standardvärde för det aktuella indataspråket om indatapanelen aldrig har visats.
Den primära skillnaden mellan det stöd för indataområde som finns i PenInputPanel-objektet och TextInputPanel-objektet är det faktum att programmet nu har möjlighet att ange standardinmatningsområdet till teckenblocket, förutom skrivblocket och tangentbordet.
Med hjälp av egenskaperna ovan kan ett program styra indataområdet för indatapanelen som visas i olika fält och optimera användarens textinmatningsupplevelse. Dessutom kan programmet upprätthålla medvetenheten om det aktuella indataområdet och fatta villkorsstyrda beslut beroende på vilket indataområde som passar bäst för den aktuella användaruppgiften.
Detaljerad information om interaktionsläget för indatapanelen
Förutom att kunna identifiera indatapanelens aktuella indataområde är det också möjligt att identifiera det aktuella interaktionsläget: På plats, Dockad eller Flytande. Det kan vara viktigt för programmet att känna till det aktuella interaktionsläget, antingen för att förstå hur användaren interagerar med programmet eller för att vissa metoder och egenskaper för TextInputPanel-objektet endast gäller för In-Place interaktionsläge. I programmet flödar till exempel om befintliga användargränssnittselement och placerar sedan In-Place indatapanelen över ett tomt område i användargränssnitten för att kontrollera att det aktuella interaktionsläget är på plats innan du gör justeringar.
Egenskapen CurrentInteractionMode för objektet TextInputPanel lagrar det aktuella interaktionsläget enligt användarens val. Möjliga lägen definieras av InteractionMode uppräkning som:
InteractionMode_InPlace– I In-Place interaktionsläge visas inmatningspanelen bredvid textinmatningsfältet som för närvarande har fokus. Som standard visas ikonen In-Place indatapanel när en insättningspunkt placeras i ett textinmatningsfält. Om du trycker på ikonen för indatapanelen expanderas inmatningspanelen. Den In-Place indatapanelen visas bara när en insättningspunkt finns i ett redigerbart fält.
InteractionMode_Floating – Det flytande interaktionsläget liknar interaktionsläget InPlace, förutom att det inte är kopplat till en insättningspunkt. Den flytande inmatningspanelen öppnas genom att trycka på fliken Indatapanel som visas som standard på skärmens vänstra kant. Både fliken Flytande indatapanel och indatapanel kan dras och flyttas av användaren. I flytande läge lämnas positionering och kontroll över indatapanelen helt till användaren.
InteractionMode_DockedTop – I Docked-Top interaktionsläge visas indatapanelen överst på skärmen och det aktiva skrivbordet ändras så att indatapanelen inte överlappar andra fönster eller gränssnittselement. Det går inte att dra eller flytta indatapanelen i det dockade läget.
InteractionMode_DockedBottom – interaktionsläget för Docked-Bottom är detsamma som Docked-Top läge förutom att indatapanelen visas längst ned på skärmen.
När indatapanelen inte visas är det aktuella interaktionsläget på plats.
Att publicera den aktuella interaktionsmodellen är ett annat sätt TextInputPanel-objektet ger mer information om tillståndet för indatapanelen än vad som har varit tillgängligt i någon tidigare version.
Detaljerad information om indatapanelens korrigeringsläge
Den sista aspekten av indatapanelen som objektet TextInputPanel ger dig detaljerad information om och kontroll över är korrigeringsläget. Att känna till korrigeringsläget hjälper program att fastställa den aktuella storleken på indatapanelen. Att styra hur korrigeringen efter infogningen expanderas i ett program är ett sätt att anpassa korrigeringsupplevelsen i ett program.
Det finns två grundläggande lägen som korrigeringskammen kan visas i: Pre-Insertion och Post-Insertion. Korrigeringskammen före infogning används för att korrigera text innan den infogas i ett program. Den aktiveras genom att trycka på den väntande texten som visas under baslinjen i skrivblocket som användarfärger. Kammen för korrigering efter infogning används för att korrigera text när den har infogats i ett program. Den aktiveras genom att placera insättningspunkten i eller välja text som tidigare infogats. Utöver de två grundläggande lägena finns det flera varianter på hur kammen för korrigering efter infogning kan visas. Först kan den visas antingen ovanför eller under indatapanelen och sedan kan den se komprimerad eller expanderad ut. I det komprimerade tillståndet visar korrigeringskammen efter infogning endast en lista över alternativ. I det expanderade tillståndet innehåller det både alternativ och ett område för att skriva om ordet.
Egenskapen CurrentCorrectionMode gör att ett program kan fastställa den aktuella konfigurationen av korrigeringskammen. Möjliga värden för den här egenskapen som definieras av CorrectionMode uppräkningar är: NotVisible, PreInsertion, PostInsertionCollapsedoch PostInsertionExpanded. När ingen indatapanel eller korrigeringskomb visas är CurrentCorrectionModeNotVisible.
Som standard visar systemet korrigeringskammen efter infogning expanderad när den väljer rättbar text och visar den komprimerad när insättningspunkten placeras i korrekt text. Ett program kan ange var postinfogningskorrigeringskammen alltid ska visas expanderad genom att ange egenskapen ExpandPostInsertionCorrection till sant. Systemstandarden är false. När egenskapen ExpandPostInsertionCorrection används tillsammans med IHandWrittenTextInsertion gränssnitt kan en programutvecklare billigt lägga till korrigeringsstöd till program som inte skulle få det automatiskt.
Att spåra och kontrollera korrigeringstillståndet för indatapanelen är en av de många nya funktionerna i TextInputPanel objekt som gör det möjligt att integrera indatapanelen och programmet närmare.
Händelsemeddelande före och efter att händelsen inträffar
En annan aspekt av indatapanelens programmerbarhet som förbättras avsevärt i TextInputPanel-objektet är händelsemodellen. I stället för att bara höja händelser som signalerar en ändring i indatapanelens tillstånd efter att ändringen har inträffat skickas separata händelser före och efter ändringen. Händelser som signalerar början av en händelse innehåller aktuella tempusver som "Ändra" eller "Infoga", medan händelser som signalerar avslutningen av en händelse innehåller tidigare tempusver som "Ändrad" eller "Infogad".
Den här händelsemodellen gör det möjligt för ett program att reagera på en ändring före eller när den inträffar. Indatapanelen blockeras från att fortsätta med en ändring eller återupptas efter ändringen tills händelsehanterarna för alla händelser har slutförts. Dessa händelser är synkrona och på så sätt kan ett program fördröja en ändring tills den har reagerat klart. Den tid då en händelsehanterare kör indatapanelen blir dock otillgänglig för användaren och kan verka låst, därför är det viktigt att händelsehanteraren presterar bra. Det är dock inte möjligt för ett program att förhindra eller avbryta en händelse. Alla händelseparametrar är skrivskyddade. Nedan visas en beskrivning av TextInputPanel objektets sex händelsepar:
- InPlaceStateChanging / InPlaceStateChanged– Meddelande om att tillståndet på plats är på väg till eller just har växlat från hovring till expanderad eller vice versa. Parametrar är det nya och gamla tillståndet på plats. Sammanträffanden med en ändring i värdet för egenskapen CurrentInPlaceState.
- InPlaceSizeChanging / InPlaceSizeChanged– anges när In-Place indatapanelens storlek håller på att ändras eller har ändrats på grund av en ändring av användarstorlek, automatisk tillväxt eller en ändring av indataområdet. Parametrar är den nya och gamla rektangeln för avgränsning. Sammanträffanden med en ändring i värdet för egenskapen InPlaceBoundingRectangle.
- InputAreaChanging / InputAreaChanged– Rapporter när indatapanelens indataområde håller på att ändras eller har ändrats från till andra av de tre möjliga indataområdena: Skrivblock, Teckenplatta eller Tangentbord. Parametrar är det nya och gamla indataområdet. Sammanfaller med en ändring i värdet för egenskapen CurrentInputArea
- CorrectionModeChanging / CorrectionModeChanged– Meddelande om att korrigeringsläget håller på att ändras eller har ändrats. Möjliga korrigeringslägen är: inte synliga, Pre-Insertion, Post-Insertion komprimerad och Post-Insertion expanderad. Parametrar är det nya och gamla korrigeringsläget. Sammanfaller med en ändring i värdet för egenskapen CurrentCorrectionMode.
- InPlaceVisibilityChanging / InPlaceVisibilityChanged– anger när In-Place indatapanelens synlighet håller på att ändras eller har ändrats. Parametrar är den nya och gamla synligheten. En ny synlighet för falska innebär att den In-Place indatapanelen inte är öppen, men utesluter inte att indatapanelen visas i interaktionsläget Flytande eller Dockad.
- TextInserting / TextInserted– Anger när text ska infogas eller har infogats från inmatningspanelen. Parametern är en matris med InkDisp objekt som var och en innehåller en rad med pennanteckningen och texten som utgör infogningen. Mer information om den här händelsen finns i nästa avsnitt.
Dessa händelser ger program viktig information om ändringar i indatapanelen och gör det möjligt för dem att reagera i enlighet med detta. Återigen representerar ändringen i händelsemodellen för indatapanelen ett steg mot bättre interaktion mellan program och indatapanelen.
Stöd för att samla in pennanteckning och text som angetts på inmatningspanelen
Sist men absolut inte minst, en mycket kraftfull ny funktion i TextInputPanel objekt är möjligheten att få pennanteckningsobjektet för text som anges via indatapanelen från indatapanelen när texten infogas i ett program. Detta har varit en ofta efterfrågad funktion för ändringsspårning och arkivering. Det gör också att program kan använda pennanteckningen i användargränssnittet antingen som ett statiskt element eller med en anpassad pennanteckningsyta.
För att kunna ta emot objektet InkDisp för text som anges via indatapanelen måste ett program registrera sig för att ta emot TextInserting- eller TextInserted händelser som genereras av TextInputPanel-objektet. Händelsen TextInserting utlöses omedelbart innan text infogas från inmatningspanelen i ett program och texten infogas inte förrän alla händelsehanterare har slutförts. TextInserted händelsen utlöses omedelbart efter att testet har infogats. Den enda parametern för både händelsen TextInserting och TextInserted är en matris med InkDisp objekt som innehåller ett InkDisp- objekt för varje textrad som infogas från indatapanelen. Obs! Indatapanelen är inaktiv medan händelsehanterarna körs och kan verka låsta för användaren, därför är det viktigt att göra dessa händelsehanterare lätta och se till att de körs snabbt. Dessutom bör ett program inte skapa en hanterare för den här händelsen om det inte har en specifik användning för informationen eftersom det finns en prestandakostnad som är associerad med att göra det. Indatapanelen konverterar endast bläckdata om det finns ett program som begär data, annars kan indatapanelen hoppa över den här kostsamma åtgärden. Parametrarna för både TextInserting och TextInserted händelser är skrivskyddade, vilket innebär att det inte är möjligt för program att ändra infogad text innan den infogas i programmet.
Möjligheterna för vad program kan göra med den här nya funktionen är breda och det kan inte vara enklare att använda. Tillåt att igenkänd text och pennanteckning som anges via indatapanelen samlas in av program är bara ett annat sätt att förbättra utvecklarberättelsen i Indatapanelen i Windows Vista.
Slutsats
Sammantaget är programmeringsberättelsen för Tablet PC-indatapanelen avsevärt förbättrad med introduktionen av TextInputPanel-objektet i Windows Vista. Genom att använda TextInputPanel-objektet har programutvecklare större kontroll och mer information om tillståndet indatapanelen i föregående version. Därför uppmanas programutvecklare som skapar nya Tablet PC-program eller uppdaterar befintliga program starkt att använda TextInputPanel-objektet i stället för det nu inaktuella PenInputPanel-objektet. Dessutom kan stöd för nya funktioner, till exempel absolut positionering av indatapanelen och ikonen Indatapanel, samt möjligheten för programmet att ta emot både känna igen text och pennanteckningar som anges via inmatningspanelen, aktivera nya programfunktioner och scenarier. Inkluderingen av dessa funktioner och flera andra är ett direkt svar på utvecklarfeedback och markerar de första stegen mot fullständig integrering av indatapanelen med Tablet PC-program. I slutändan är det en stor vinst att utöka funktionerna för Tablet PC-program för både programutvecklare och Tablet PC-plattformen.