This page was last modified 03:46, 29 June 2007.
Eventos do teclado - Exemplo
From Forum Nokia Wiki
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(); }
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Gradient | j.teixeira | Mobile Java Media (Graphics & Sounds) | 4 | 2007-03-15 00:28 |
| Forum Nokia WRT Webinar Q&A (In Portuguese) | bill.volpe | WRT Widget Development | 0 | 2008-06-13 16:35 |
| Error: ncnlist KERN-EXEC 3 | Estrella | Foro en Español (Spanish Forum) | 5 | 2007-05-30 21:08 |
| Recoger eventos de datos del log | Estrella | Foro en Español (Spanish Forum) | 1 | 2007-08-31 11:21 |
| interceptar emails | haydn | Foro en Español (Spanish Forum) | 4 | 2007-07-19 08:09 |
