×
Namespaces

Variants
Actions

Recuperando um ponteiro para class Document

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

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

Muitas vezes quando utilizamos o padrão Model-View-Controller , precisamos acessar dados contidos na nossa classe Document.

Para fazer isto precisamos de um ponteiro que aponte para o objeto desta classe. Para recuperar este ponteiro iremos utilizar um método de CEikAppUi chamdo Document(). Este método retorna um ponteiro genérico do tipo CEikDocument. Para poder utilizar os métodos da nossa classe document precisaremos da um cast da classe base CEikDocument para a nossa classe CMeuDocumento (por exemplo).

Para ilustrar melhor a relação entre as classes aqui está um diagrama de classes. Para a nossa classe Document temos:

Diagramaumldocument.JPG

Não está explicíto, mas por estas classes começarem com a letra C, sabemos que são derivadas de CBase.

Contents

Recuperando o ponteiro dentro de uma classe AppUi

Classes AppUi são em geral derivadas de CAknAppUi (caso não implemente views) ou CAknViewAppUi(caso a aplicação trabalhe com views). Na relação de hierarquia elas herdam o método Document() de CEikAppUi. Considerando que você precise do ponteiro para Document dentro de sua classe AppUi, basta apenas chamar o método Document(), dando o devido cast. Exemplo:

// Cast para da classe base para a classe filho.
CMeuDocumento* documento = static_cast<CMeuDocument*>(Document());
// Chamando um método qualquer.
documento->MinhaFuncao();

Recuperando o ponteiro dentro do seu container

Classes derivadas de CCoeControl possuem um atributo membro iCoeEnv, que é um ponteiro do tipo CCoeEnv. Esta classe possui um método AppUi() que retorna um ponteiro do tipo CCoeAppUi, iremos utilizar este ponteiro para chamar o método Document de CEikAppUi. Como veremos na imagem abaixo CCoeAppUi não possui o método Document() implementado (ele está implementado em CEikAppUi , filha de CCoeAppUi), tereremos então quer dar um cast para a classe AppUi de nossa aplicação para poder acessar este método.

Diagramaumlappui.JPG

Exemplo

// Conversão do tipo CCoeAppUi para CMeuAppUi.
CMeuAppUi* appUi = static_cast<CMeuAppUi*>(iCoeEnv->AppUi());
// Conversão do tipo CEikDocument para CMeuDocumento.
CMeuDocumento* documento = static_cast<CMeuDocumento*>(appUi->Document());
// Chamando um método qualquer.
documento->MinhaFuncao();

Referências

Developing Series 60 Applications: A Guide for Symbian OS C++ Developers (cap. 4)

This page was last modified on 9 December 2011, at 07:14.
57 page views in the last 30 days.
×