Welcome to MSDN Blogs Sign in | Join | Help

Browse by Tags

All Tags » Text Services   (RSS)
In a previous post , I mentioned that you need to set the GUID_PROP_COMPOSING property across text in a composition, or else Windows XP will terminate the composition. That’s true. I then provided a code snippet to set that property. That snippet is wrong. Read More...
Many people have emailed me asking about the TSF samples on MSDN.  They’re supposed to be on MSDN code gallery, although they don’t appear to be there. They are, however, part of the Windows SDK . After installation, you'll find them in %programfiles%\Microsoft Read More...
In an earlier post on keyboards , I talked briefly about text service categories.  I'd like to talk more about categories. TSF will make sure that at most one text service in any category is enabled at any given time. So, for example, you can enable Read More...
If you're building a text service DLL, you almost certainly don't want to use Visual Studio 2008's compiler.  The problem is that Visual Studio 2008 uses a new C Runtime Library, and if you build your text service with Visual Studio, your text service Read More...
I recently had two people ask me the same question: "Why can't I insert more than one character into a composition on Notepad?" It's actually a bit more complicated than that, since this behavior only appears to happen on Windows XP with a US English Read More...
I got caught by this recently. ITfCompartmentEventSink::OnChange means what it says. If you repeatedly store the same value into a global compartment, the event sinks will not fire. If you store a different value into the compartment, the event sinks Read More...
I've been working with compartments recently, and I've run across a few 'features' that tripped me up. I figure if I've run across them, others have too. Although MSDN says that you can put integers, BSTRs, and interface pointers into a compartment, you Read More...
Text Services Framework assumes that your text service follows a particular processing path. If your text service doesn't conform to these assumptions, then your programming job will be more complicated. (Not impossible, just more complex.) The text service Read More...
I received an interesting email the other day asking about how to get the character code from the parameters passed to the ITfKeyEventSink::OnKeyDown method. The answer is that most keyboard related text services only work with a particular keyboard layout, Read More...
Another useful, but underutilized, group of functions in TSF are those relating to Input Scopes. Input Scopes allow an application to define the sorts of things that are expected in this document (edit control, etc.). For example, the Internet Explorer Read More...
One interface that I hadn't paid much attention to in TSF is ITfContextKeyEventSink . What does this let you do? Why, it lets you inspect keyboard input for a particular context (or document). This lets you do some really fun things, like redirect keyboard Read More...
I've received a few emails asking about debugging Text Services. I figured if two people actually went to the trouble of sending an email, that there's enough demand for a post. But first, a little diversion: It turns out that Visual Studio 2005 SP1 ships Read More...
The Text Services Framework makes a number of assumptions when you register your text service as a keyboard text service (i.e., your text service calls RegisterCategory(<clsid of your text service>, GUID_TFCAT_TIP_KEYBOARD, <clsid of your text Read More...
So how do you create the candidates from within the text service? Well, the first thing you need is the original input, and you need to know what text was created from the original input. Almost all text services (there might be a few that don't do this) Read More...
Kirby left a comment to my post on candidates asking when a text service should create an ITfCandidateList. The answer is that when the text service wants to show candidates (via a preserved key or other mechanism), it should show its modal UI, and quite Read More...
More Posts Next page »
 
Page view tracker