Microsoft KB Archive/171154

{|
 * width="100%"|

HOWTO: Disable IME for a Particular Window

 * }

Q171154

-

The information in this article applies to:


 * Microsoft Win32 Application Programming Interface (API), used with:
 * the operating system: Microsoft Windows NT 4.0
 * the operating system: Microsoft Windows 2000

-

SUMMARY
In the Far East versions of Windows 95 and Windows NT 4.0, applications can call ImmAssociateContext to disable IME for a certain window. Windows 95 and Windows 4.0 now have a new Far East Common API Specification that enables this to would work for the Chinese, Japanese, and Korean versions of Windows 95 and Windows NT 4.0.

Sample Code
To disable IME for a certain window, an application can call ImmAssociateContext API as shown below:

     HIMC hIMC;

hIMC = ImmAssociateContext(hWnd, NULL);  // It makes IME disable for // hWnd window.

// Then you can do whatever you want without IME.

ImmAssociateContext(hWnd, hIMC); // If you want to enable // IME again, then you can // use the previous stored IME // context(hIMC) // to restore IME. This method will not work on Windows 3.1 and Windows NT 3.5. You can use WinnlsEnableIMEfor these systems, but this function will enable/disable the whole system IME, not just for a specific window.

The reason ImmAssociateContext does not work on Windows NT 3.51 is that when Microsoft was developing new IMM functions, Windows NT 3.51 was already released with old functionality. Windows NT 3.5 and 3.51 still use Windows 3.1 style IME API like WinnlsEnableIME and SendIMEMessageEx. But, Windows NT 4.0 adapted Windows 95's IME API so that Windows NT 4.0 has the same set of IME API with Windows 95.

Additional query words:

Keywords : _IK kbusage kbIntl kbOSWinNT400 kbOSWin2000 kbSDKWin32

Issue type : kbhowto

Technology : kbAudDeveloper kbWin32sSearch kbWin32API