最好使用MAknEditingStateIndicator获取输入法状态。在KeyUp和KeyDown后,获取输入法状态。代码如下:
MAknEditingStateIndicator * ei = CAknEnv::Static()-> EditingStateIndicator() ;
if (!ei) return EUnknown;
CAknIndicatorContainer *ic = ei-> IndicatorContainer();
if (!ic) return EUnknown;
if(ic-> IndicatorState(S_uid(EAknNaviPaneEditorIndicatorPinyin) ))
{
//to do ... if input method = T9 (即拼音和笔画)
}
if(ic-> IndicatorState(S_uid(EAknNaviPaneEditorIndicatorStroke) ))
{
//to do ... if input method = T9 (即拼音和笔画)
}
else if(ic-> IndicatorState(S_uid(EAknNaviPaneEditorIndicatorLowerCase)))
{
//to do ... if input method = "abc ";
}
else if(ic-> IndicatorState(S_uid(EAknNaviPaneEditorIndicatorUpperCase)))
{
//to do ... if input method = "ABC ";
}
else if(ic-> IndicatorState(S_uid(EAknNaviPaneEditorIndicatorTextCase)))
{
//to do ... if input method = "Abc ";
}
else if(ic-> IndicatorState(S_uid(EAknNaviPaneEditorIndicatorNumberCase)))
{
//to do ... if input method = "123 ";
}
return EUnknown;
struct S_uid: public TUid
{
S_uid(int i)
{
iUid = i;
}
};
class MAknEditingStateIndicator
{
public:
virtual void SetState(TInt aState) = 0;
virtual CAknIndicatorContainer *IndicatorContainer() = 0;
};