Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Eventos do teclado - Exemplo

From Wiki
Jump to: navigation, search
Article Metadata

Artigo
Criado por cabezonxdg em Cabezonxdg
Última alteração feita por hamishwillee em 09 Dec 2011

Para receber eventos do teclado, seu controle deve implementar a função OfferKeyEventL e ter o seu controle adicionado na Control´s stack. Pode-se passar o próprio view da aplicação como referência do control stack e isso é feito no construtor de segunda-fase na classe CAknAppUi da sua aplicação.

Para não postar todo o código AppUi da aplicação ele será omitido. A função AddToStackL() foi chamada no construtor de segunda-fase dessa classe e destruida no seu destrutor. Nesse exemplo um retângulo será exibido na tela e ele será movimentado através das arrows no teclado do celular alterando-se suas posições x e y.

EventosTecladoAppUi.cpp

void CEventosTecladoAppUi::ConstructL()
{
iAppView = CEventosTecladoAppView::NewL( ClientRect() );
AddToStackL(iAppView);
//Restante do código normal
}
 
CEventosTecladoAppUi::~CEventosTecladoAppUi()
{
if ( iAppView )
{
RemoveFromStack(iAppView);
delete iAppView;
 
iAppView = NULL;
}
 
}

EventosTecladoAppView.h

#include <coecntrl.h>
 
class CEventosTecladoAppView : public CCoeControl
{
public:
static CEventosTecladoAppView* NewL( const TRect& aRect );
static CEventosTecladoAppView* NewLC( const TRect& aRect );
virtual ~CEventosTecladoAppView();
TKeyResponse OfferKeyEventL(const TKeyEvent &aKeyEvent,
TEventCode aType);
 
public:
void Draw( const TRect& aRect ) const;
virtual void SizeChanged();
 
private:
void ConstructL(const TRect& aRect);
CEventosTecladoAppView();
//Pos do Ret. na tela , para ele movimentar x e y serão alterados
TPoint iPos;
 
};

EventosTecladoAppView.cpp

#include <coemain.h>
#include "EventosTecladoAppView.h"
 
CEventosTecladoAppView* CEventosTecladoAppView::NewL( const TRect& aRect )
{
CEventosTecladoAppView* self = CEventosTecladoAppView::NewLC( aRect );
CleanupStack::Pop( self );
return self;
}
 
CEventosTecladoAppView* CEventosTecladoAppView::NewLC( const TRect& aRect )
{
CEventosTecladoAppView* self = new ( ELeave ) CEventosTecladoAppView;
CleanupStack::PushL( self );
self->ConstructL( aRect );
return self;
}
 
void CEventosTecladoAppView::ConstructL( const TRect& aRect )
{
CreateWindowL();
SetRect( aRect );
ActivateL();
 
iPos = TPoint(0,0);
}
 
CEventosTecladoAppView::CEventosTecladoAppView()
{
}
 
CEventosTecladoAppView::~CEventosTecladoAppView()
{
}
 
void CEventosTecladoAppView::Draw( const TRect& /*aRect*/ ) const
{
CWindowGc& gc = SystemGc();
TRect drawRect( Rect());
gc.Clear( drawRect );
 
TRect rect (iPos,TSize(100,100));
gc.DrawRect(rect);
}
 
TKeyResponse CEventosTecladoAppView::OfferKeyEventL(const TKeyEvent &aKeyEvent,
TEventCode /*aType*/)
{
switch(aKeyEvent.iCode)
{
case EKeyUpArrow:
{
iPos.iY -= 3;
DrawNow();
break;
}
case EKeyDownArrow:
{
iPos.iY += 3;
DrawNow();
break;
}
case EKeyLeftArrow:
{
iPos.iX -= 3;
DrawNow();
break;
}
case EKeyRightArrow:
{
iPos.iX += 3;
DrawNow();
break;
}
default:
return EKeyWasNotConsumed;
}
return EKeyWasConsumed;
}
void CEventosTecladoAppView::SizeChanged()
{
DrawNow();
}
This page was last modified on 9 December 2011, at 04:53.
164 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×