Welcome to MSDN Blogs Sign in | Join | Help

May 2007 - Posts

I suppose while I'm sending out the random link propagation, I should also mention LOLCODE - the programming language for really leet coders. I think it's related to the (deservedly) esoteric language valgol , from the 80's. Update: on second thought, Read More...
Enough about TSF for a while. :) I found this amazingly addictive game the other day called Desktop Tower Defense . It's sort of the reverse of Lemmings - instead of saving all the lemmings, you need to squash them all. There's an insane number of levels, 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...
As I mentioned earlier , TSF provides very basic services in applications that are not TSF-aware. In particular, TSF provides only transitory documents and contexts that represent short-lived text compositions. In Windows Vista, TSF adds full text store Read More...
Probably the most annoying thing about writing a text service is dealing with all the variations in text stores. They all have quirks that need to be worked around, and any significant change has to be tested against all the text stores to make sure that Read More...
One of the harder parts of writing a text service is learning how to 'think' text services. Here are a couple of rules that I've developed (the hard way) after writing a text service: The first rule of writing a text service is: Keep the edit sessions Read More...
The TSF tour ends here, with a brief discussion of UI Elements in Vista If your text service wishes to be available in full-screen applications like games, it must implement ITfUIElement , and call the ITfUIElementMgr whenever the text service wants to Read More...
In Windows Vista, TSF added the ability to run in locations where it had previously been disabled. For example, TSF is now available on secure desktops, in full screen (DirectX) applications, and in MTA threads. However, text services have to be aware Read More...
If your text service supports multiple interpretations of the same input, and you wish to allow users to correct the initial interpretation (for dictation, we call this 'correction'; IMEs tend to call it 'reconversion'), your text service will need to Read More...
TSF allows text services to offer optional extension points through the ITfFunctionProvider interface. Indirection through the function provider allows text services to minimize memory usage and startup time by instantiating services when requested, rather Read More...
If your text service wishes to display some UI on the language bar, then your service will need to create objects that implement one (or more) of the following interfaces: Interface How Obtained ITfLangBarItem Pass this base interface to ITfLangBarItemMgr::AddItem Read More...
If your text service wishes to display text in different colors (e.g., displaying the current composition in red), then your text service needs to implement these interfaces: Interface How Obtained ITfDisplayAttributeProvider Obtained by QI from ITfTextInputProcessor Read More...
The next thing that I'd like to talk about are properties. While the TSF manager implements basic property handling (via ITfProperty), a text service has the ability to customize the way TSF handles properties. If your text service wishes to attach private Read More...
We have finally finished looking at the interfaces that TSF implements for you. Now we start looking at the interfaces that text services must implement. The first step are the essential interfaces. Every text service must implement these two interfaces. Read More...
The last set of interfaces implemented by the TSF manager are the 'odd-ball' interfaces that don't really fall into any other logical groups. Helpers The interfaces in this category provide auxiliary services for applications or text services. Interface Read More...
And now for something completely unrelated to TSF, or dictation: I'm going to pile onto the incredibly funny Star Trek/ lolcat spoof at granades.com. If you haven't seen it yet, it's pretty darn funny. Read More...
These interfaces manage the language bar and the items that display on the language bar. These interfaces are used exclusively by text services, and will be discussed further in a future post. Interface How to Obtain ITfLangBarMgr CoCreateInstance(CLSID_TF_LangBarMgr) Read More...
The next set of TSF manager interfaces are the enumerators. These are rather boring interfaces; they just enumerate things. Generally speaking, the enumerators enumerate things owned by the item that provides the enumerator. For example, IEnumTfContexts Read More...
The interfaces in this category allow you to be called back when certain events happen on another interface. These callbacks are generally referred to as 'event sinks'. Interface How to Obtain ITfSource QI on ITfThreadMgr , ITfContext , ITfCompartment Read More...
Our next stop on our tour through TSF brings us to the two most heavily used interfaces in text services: Contexts and Ranges. But first, a quick diversion to discuss the relationship between threads, documents, and contexts. The ITfThreadMgr object is Read More...
 
Page view tracker