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.