本文主要是介绍在第三版和第五版上分别响应CEikEdwin的HandlePointerEventL事件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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
这篇关于在第三版和第五版上分别响应CEikEdwin的HandlePointerEventL事件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!