下面我们来看看按键监听处理。
1初始化需要监听的按键
void CmyPhoneAppUi::InitKey()
{
//用于程序在后台式相应按键
iEikonEnv->RootWin().CaptureKey(63587,0,0);
iEikonEnv->RootWin().CaptureLongKey(63587,63587, 0, 0,2000000000,
ELongCaptureNormal);//63587:挂机键
//iEikonEnv->RootWin().CaptureKey(63499,0,0);
//iEikonEnv->RootWin().CaptureLongKey(63499,63499, 0, 0,2000000000,
ELongCaptureNormal);//63499:笔形键
iEikonEnv->RootWin().CaptureKey(63570,0,0);
iEikonEnv->RootWin().CaptureLongKey(63570,63570, 0, 0,2000000000,
ELongCaptureNormal);//63570:菜单键
iEikonEnv->RootWin().CaptureKey(63586,0,0);
iEikonEnv->RootWin().CaptureLongKey(63586,63586, 0, 0,2000000000,
ELongCaptureNormal);//发射键
iEikonEnv->RootWin().CaptureKey(8,0,0);
iEikonEnv->RootWin().CaptureLongKey(8,8, 0, 0,2000000000, ELongCaptureNormal);//C键
iEikonEnv->RootWin().CaptureKey(63557,0,0);
iEikonEnv->RootWin().CaptureLongKey(63557,63557, 0, 0,2000000000,
ELongCaptureNormal);//OK键
iEikonEnv->RootWin().CaptureKey(63497,0,0);
iEikonEnv->RootWin().CaptureLongKey(63497,63497, 0, 0,2000000000,
ELongCaptureNormal);//上键
iEikonEnv->RootWin().CaptureKey(63498,0,0);
iEikonEnv->RootWin().CaptureLongKey(63498,63498, 0, 0,2000000000,
ELongCaptureNormal);//下键
iEikonEnv->RootWin().CaptureKey(63496,0,0);
iEikonEnv->RootWin().CaptureLongKey(63496,63496, 0, 0,2000000000,
ELongCaptureNormal);//左键
iEikonEnv->RootWin().CaptureKey(63458,0,0);
iEikonEnv->RootWin().CaptureLongKey(63458,63458, 0, 0,2000000000,
ELongCaptureNormal);//右键
}
2重载HandleKeyEventL
TKeyResponse CmyPhoneAppUi::HandleKeyEventL(const TKeyEvent &aKeyEvent, TEventCode aType)
{
if (aType == EEventKey)
{
//记得把按键信息传回去
RWsSession iWsSession;
User::LeaveIfError(iWsSession.Connect());
TInt wgId = iWsSession.GetFocusWindowGroup(); //获取当前界面ID
CApaWindowGroupName* gn = CApaWindowGroupName::NewLC(iWsSession, wgId);
TUid uid = gn->AppUid();
TWsEvent event;
event.SetType( EEventKey );
event.SetTimeNow();
event.Key()->iCode = aKeyEvent.iCode;
event.Key()->iModifiers = aKeyEvent.iModifiers;
event.Key()->iRepeats = aKeyEvent.iRepeats;
event.Key()->iScanCode = aKeyEvent.iScanCode;
iWsSession.SendEventToWindowGroup(wgId,event);
CleanupStack::PopAndDestroy(); //gn
iWsSession.Close();
//
这里可以处理监听到的按键
}
//必须返回值,不要拦截系统的按键消息
return EKeyWasNotConsumed;
}
另外做全屏处理时,有一点需要注意:
在 CmyPhoneAppUi::ConstructL()中
{
BaseConstructL();
StatusPane()->MakeVisible(EFalse);//隐藏TITLE
Cba()->MakeVisible(EFalse); // 隐藏按键
}
void CmyPhoneAppUi::HandleStatusPaneSizeChange()
{
//iAppView->SetRect( ClientRect() ); 一定要把这句注掉
}
Symbian按键监听(Monitor key console) 转 - [symbian]
最新推荐文章于 2021-08-06 16:37:07 发布