-
Bug
-
Resolution: Fixed
-
P3
-
7
-
b68
-
x86
-
windows_2003
MSDN documant says,
http://msdn.microsoft.com/en-us/library/dd374142(VS.85).aspx
---------------------------------------------------------------
Remarks
If the application has created an IME window,
it should call ImmIsUIMessage.
Otherwise, it should pass this message to DefWindowProc.
---------------------------------------------------------------
This seems to say, "when IME receives WM_IME_SETCONTEXT, it should call either of
ImmIsUIMessage() or DefWindowProc() ."
Actual implementation in JDK5/JDK6u14/JDK7 (for Windows) handles the case of WM_IME_SETCONTEXT
message as follows.
----- ./j2se/src/windows/native/sun/windows/awt_Component.cpp---
...
MsgRouting AwtComponent::WmImeSetContext(BOOL fSet, LPARAM *lplParam)
{
// This message causes native status window shown even it is disabled. So don't
// let DefWindowProc process this message if this IMC is disabled.
HIMC hIMC = ImmGetContext();
if (hIMC == NULL) {
return mrConsume;
}
...
--------
This program does not call DefWindowProc when it can not find out HIMC("if" statement is true).
JDK should call either of ImmIsUIMessage() or DefWindowProc().
http://msdn.microsoft.com/en-us/library/dd374142(VS.85).aspx
---------------------------------------------------------------
Remarks
If the application has created an IME window,
it should call ImmIsUIMessage.
Otherwise, it should pass this message to DefWindowProc.
---------------------------------------------------------------
This seems to say, "when IME receives WM_IME_SETCONTEXT, it should call either of
ImmIsUIMessage() or DefWindowProc() ."
Actual implementation in JDK5/JDK6u14/JDK7 (for Windows) handles the case of WM_IME_SETCONTEXT
message as follows.
----- ./j2se/src/windows/native/sun/windows/awt_Component.cpp---
...
MsgRouting AwtComponent::WmImeSetContext(BOOL fSet, LPARAM *lplParam)
{
// This message causes native status window shown even it is disabled. So don't
// let DefWindowProc process this message if this IMC is disabled.
HIMC hIMC = ImmGetContext();
if (hIMC == NULL) {
return mrConsume;
}
...
--------
This program does not call DefWindowProc when it can not find out HIMC("if" statement is true).
JDK should call either of ImmIsUIMessage() or DefWindowProc().