Quote:> I am using the English version of Win98. I do have the
> East Asian Language Pack installed. So I can enter
> Japanese and Chinese into Word with IME. But I still can
> not get IME to work with my .Net application.
There are two types of IMEs; regular IME and ActiveIME. ActiveIME appears
later, and apps need to support ActiveIME API specifically to use it. As far
as I know, there are very few applications that supports ActiveIME,
including Office 2000/XP and IE.
On English NT platform, both IMEs are supported, while on English Win9x
platform, only ActiveIME is supported. Since Win9x provides very little
support for Unicode, to use IME, the app must be fully Unicode enabled, and
cannot use regular Windows messages (since Win9x kernel cannot handle
Unicode messages). ActiveIME was designed to provide least capability (at
least typing East Asian characters) for fully Unicode-aware applications. It
does this by not relying on kernel, but providing specifially designed APIs
for apps to support.
Given that, you may think there are no reasons .NET Framework can support
ActiveIME since it's fully Unicode-based, but that's not the case.
Supporting ActiveIME means you cannot use any text-related controls Windows
provides as they don't support Unicode at all on Win9x. You might know,
Office and IE uses their own textbox and does not rely on Windows. For .NET,
since developers might have their own controls, supporting ActiveIME means
all text input including user controls must support ActiveIME APIs. Probably
that cost will not pay as there won't be many people who wants to do
this--probably less than who have their own text-related user controls
You may try if you can use your IME with Notepad. It will not work. So that
says, it's not that ActiveIME doesn't work with your .NET app; it's very few
apps can use ActiveIME.
If you are required to support IME on your .NET apps on Win9x, I would say
- You need to replace your textoxes to RichEdit2 control, which is
ActiveIME-aware, and which supports Unicode even on Win9x.
- When getting/setting values from/to the RichEdit2, don't use regular
method. Use specialized messages so that you can get/set Unicode text
directly (WM_TEXT for instance is ANSI-only on Win9x platform).
- If you have any other controls that handles text messages directly, you
need to support ActiveIME there.
- Common dialogs are also an issue; they have use textboxes. Office has
their own file-open dialog, you would need to do the same.
- Combobox is also an issue--any controls that has textboxes in it are
issues--since you can't simply ask Combobox to use RichEdit2 and use Unicode
messages. You'd probably end up implementing your own combobox, and any
other controls that has textboxes as child controls.
There might be a lot more. If you can change your app to ASP.Net app, you're
lucky since IE supports ActiveIME. Otherwise, I would recommend you (and
your clients) to upgrade to NT/2000/XP.