在第三版和第五版上分别响应CEikEdwin的HandlePointerEventL事件

    技术2022-05-19  20

    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


    最新回复(0)