When IME gets some event through ImeNotifyEvent call, usually IME changes the IM instance contents and then calls appropriate ImRequestEvent so that the system will route WM_IMEREQUEST or WM_IMENOTIFY message. Sample pseudo code will look like this,
ImeNotifyEvent( EventType )
{
switch( EventType )
{
case SomeEvent:
/* IME logic(i.e. no display) processing */
ImRequestIMInstance();
ImRequestIMIPart(); /* if required */
/* Reflect the processing in instance */
ImReleaseIMIPart(); /* if required */
ImReleaseIMInstance();
/* Request event to route */
ImRequestEvent( RequestEvent type for 'SomeEvent' );
break;
:
}
return NO_ERROR;
}
If IME does not call ImRequestEvent for events which needs display change, L3 application(also the default part classes) cannot show IME related display.