This page was last modified 15:47, 26 October 2007.
Classes de uma aplicação
From Forum Nokia Wiki
Ao criar um projeto Symbian OS C++, são geradas quatro classes necessárias para a execução da aplicação.
Contents |
Classes
Application
Document
AppUi
Container
Application
const TUid KUidMyAppApp = { _UID3 }; class CMyAppApplication : public CAknApplication { public: TUid AppDllUid() const; protected: CApaDocument* CreateDocumentL(); };
Ao iniciar um programa está é a primeira classe a ser chamada, ela é responsável por criar e retornar um ponteiro do documento, bem como retornar o UID3 da aplicação.
AppDLLUid() - É chamado pelo processo da aplicação imediatamente após a criação da aplicação, retorna o UID3 específico da aplicação.
CreateDocumentL() - Cria e retorna um ponteiro para o documento criado, sempre será chamada após AppDllUid().
Document
class CMyAppDocument : public CAknDocument { public: static CMyAppDocument* NewL( CEikApplication& aApp ); static CMyAppDocument* NewLC( CEikApplication& aApp ); virtual ~CMyAppDocument(); public: CEikAppUi* CreateAppUiL(); private: void ConstructL(); CMyAppDocument( CEikApplication& aApp ); };
A classe documento normalmente é utilizada para o programa implementar armazenamento de dados em um arquivo. Outra função da classe document é fazer a construção do AppUi. Como ainda não estamos manipulando nenhum dado, esta função apenas fará a criação da user interface.
CreateAppUiL() - Cria a AppUi e retornar um ponteiro para isto.
AppUi
class CMyAppAppUi : public CAknAppUi { public: void ConstructL(); CMyAppAppUi(); virtual ~CMyAppAppUi(); private: void HandleCommandL( TInt aCommand ); void HandleStatusPaneSizeChange(); CArrayFix<TCoeHelpContext>* HelpContextL() const; private: CMyAppAppView* iAppView; };
Esta função não é responsável por exibir dados na tela, mas é responsável por gerênciar e criar views que fazem isso. Esta função também é responsável por manipular comandos e eventos da aplicação implementando funções virtuais, como eventos de menus e toolbars.
Alguns exemplos de comandos suportados:
HandleKeyEventL(): // Eventos do teclado. HandleForegroundEventL(): // Aplicação foi para Foreground. HandleSwitchOnEventL(): // Dispositivo ligou. HandleSystemEventL(): // Eventos do sistema. HandleWsEvent(): // Eventos do Window Server HandleApplicationSpecificEventL(): // Eventos especifícos da aplicação. HandleCommandL(): // Manipula comandos definidos no arquivo de recursos.
Container
class CDrawExemploAppView : public CCoeControl { public: static CMyAppAppView* NewL( const TRect& aRect ); static CMyAppAppView* NewLC( const TRect& aRect ); virtual ~CMyAppAppView(); public: // Funções da classe-base void Draw( const TRect& aRect ) const; void SizeChanged(); private: void ConstructL(const TRect& aRect); CMyAppAppView() };
Containers são criados na construção em duas fases do AppUi, são responsáveis por exibir controles para o usuário. Um view é responsável por um container, este container contêm um ou vários controles. Na Traditional Symbian OS Control-Based Architecture o view é o próprio controle, é a forma mais simples e a utilizada na criação default do seu projeto.
NewL(), NewLC(), ConstructL() - Fazem parte da construção em duas fases do controle, garantindo que caso ocorram abandonos durante a criação do controle, eles serão gerenciados corretamente.
Draw() - Realiza os desenhos no container, nesse caso apenas limpa a tela.
SizeChanged() - É chamado quando o container é criado/resized.
Derivações das classes
O Exemplo acima demonstra como se da a derivação das classes utilizada em uma aplicação chamada MyApp.
Todas as classes no topo do diagrama são específicas da aplicação, elas são derivadas das camadas mais baixas para fornecer a instância da Aplicação e funcionalidades específicas.
Artigos relacionados
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| KSoap with NDS as Standalone | becem | Mobile Java Tools & SDKs | 4 | 2003-08-05 10:53 |
| Two Phase Constructor | ovvenkatesan | General Symbian C++ | 7 | 2007-10-12 11:57 |
| 3650 posted a few weeks ago but still no joy | wprescott | Mobile Java General | 6 | 2003-08-31 22:57 |
| Problems with installing an bluetooth-midlet to 6600. | mika1982 | Mobile Java General | 1 | 2003-11-19 11:47 |
| Standard Packages and Classes normally found in SDK 1.4 on pc's | mikearundel | Mobile Java Tools & SDKs | 1 | 2002-12-24 10:09 |
