1.定义两个CEikEdwin CEikEdwin* iEdwin1; CEikEdwin* iEdwin2; enum TControlIDS { EfirstEd, E2ndEd }; //创建: //动态创建名称编辑框 iEdwin1 = new (ELeave) CEikEdwin; iEdwin1->SetContainerWindowL(*this); iEdwin1->ConstructL(EAknEditorFlagDefault, 11, 11, 1); iEdwin1->SetFocus(ETrue); iEdwin1->SetAknEditorAllowedInputModes(EAknEditorNumericInputMode); iEdwin1->SetAknEditorInputMode(EAknEditorNumericInputMode); iEdwin1->SetAknEditorCurrentInputMode(EAknEditorNumericInputMode); iEdwin1->SetAknEditorNumericKeymap(EAknEditorPlainNumberModeKeymap); iEdwin1->ActivateL(); iEdwin2 = new (ELeave) CEikEdwin; iEdwin2->SetContainerWindowL(*this); iEdwin2->ConstructL(EAknEditorFlagDefault, 11, 11, 1); iEdwin2->SetFocus(EFalse); iEdwin2->ActivateL(); 在Containers中设置实现: void CloginContainer::HandlePointerEventL(const TPointerEvent& aPointerEvent) { TBool penEnabled = EFalse; RLibrary avkonDll; if (avkonDll.Load(_L( "avkon.dll" )) == KErrNone) { #ifdef __WINS__ TLibraryFunction PenEnabled = avkonDll.Lookup( 3184 ); #else TLibraryFunction PenEnabled = avkonDll.Lookup(4251); #endif if (PenEnabled != NULL) { penEnabled = PenEnabled(); } avkonDll.Close(); } if (!penEnabled) { return; } // Remove last focus CCoeControl* iFocusedControl; iFocusedControl = ComponentControl(iCurrentControl); if (aPointerEvent.iType == TPointerEvent::EButton1Up) { TPoint inewPointer = aPointerEvent.iPosition; if (iEdwin1->Rect().Contains(inewPointer)) if (iCurrentControl != EfirstEd) { iCurrentControl = EfirstEd; iFocusedControl->SetFocus(EFalse); iEdwin1->SetFocus(ETrue, EDrawNow); } if (iEdwin2->Rect().Contains(inewPointer)) if (iCurrentControl != E2ndEd) { iCurrentControl = E2ndEd; iFocusedControl->SetFocus(EFalse); iEdwin2->SetFocus(ETrue, EDrawNow); } } CCoeControl::HandlePointerEventL(aPointerEvent); } 经过这个,在v3和v5上都可以适用了。 测试机型:5230、6730