[ACCEPTED]-how do you use IME?-ime

Accepted answer
Score: 29

I'm a Microsoft SDE that used to maintain the (Windows and Office) Korean IME for a while...

Unfortunately the best IME API documentation 21 is provided by non-Microsoft sites:


Here 20 is the official Microsoft documentation: Input Method Manager (MSDN)

There 19 is also a new, more advanced IME based on 18 the Text Services Framework (TSF) that Microsoft 17 would prefer you to use, but it's even more 16 complicated and the old API is emulated 15 pretty well. If you don't need any of the 14 advanced features (like input via tablet/voice 13 recognition/fancier IME/etc) then using 12 the old API is sufficient.

The best documentation 11 on the Text Services Framework is the TSF Aware Blog written 10 by another Microsoft dev. Eric Brown may 9 even personally answer your questions if 8 you go this route.

Here is the official Microsoft 7 documentation for TSF: Text Services Framework (MSDN)

One feature of TSF 6 you may find useful is the ability to suppress 5 rendering of the IME (needed for full screen 4 games that need to render the IME themselves, for 3 example). Simply tell TSF that your app 2 will render the IME GUI, then implement 1 an empty rendering method: UILess Mode Overview (MSDN)

Score: 0

I don't think that you want to supress an 14 IME from being displayed. I've never used 13 one other than for testing, but it's my 12 understanding that an IME is the expected/default 11 way of entering non-English characters using 10 an English keyboard.

If you are writing a 9 control and want to fully support an IME, I 8 think the two options that you have are 7 to respond to the various Windows messages 6 (like WM_IME_START_COMPOSITION, WM_IME_COMPOSITION, etc.) or 5 use Text Services Framework (TSF). It's 4 my understanding that TSF is the future, and 3 in Vista and Windows 7 all of the IME code 2 is based off of TSF, with the Windows messages 1 still there for compatibility with old programs.

More Related questions