Join Now
Quality Rating:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)
Expertise Level:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)

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
 
Powered by MediaWiki
     
     RDF Facets:
     
     
     qfnZtypeQUqfnTypeZCommunityContentQ
     qfnZtypeQUqfnTypeZWebpageQ
     qfnZtypeQUqfnTypeZWikiContentQ
     qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX