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.

Acesso Direto à Tela (DSA)

From Wiki
Jump to: navigation, search
Article Metadata

Artigo
Tradução:
Por lpvalente
Última alteração feita por hamishwillee em 09 Dec 2011


Contents

Introdução

Acesso direto à tela (do Inglês DSA - Direct Screen Access) é uma maneira de se desenhar na tela sem utilizar o servidor de janelas. Essa alternativa é mais eficiente pois evita a comunicação com o servidor, sendo recomendada para aplicações que lidam com vídeo, e jogos. Entretanto, a comunicação com o servidor de janelas é necessária em alguns momentos para se evitar acessos inválidos a dados de outras aplicações. A classe que implementa o acesso direto à tela (CDirectScreenAccess) é implementada como um objeto ativo:

class CDirectScreenAccess : public CActive;

A seguir, alguns dos membros definidos nessa classe.

DrawingRegion()

Retorna qual é a área da tela onde as operações de desenho devem ser feitas.

inline RRegion *DrawingRegion();

Gc()

Retorna o contexto gráfico que será usado para se desenhar na tela. Esse contexto é criado pela classe ao se iniciar o acesso direto através de StartL(). As partes da tela onde serão feitos os desenhos devem ser especificadas como coordenadas da janela, e a área permitida para desenho é determinada pelo objeto RRegion obtido por DrawingRegion().

inline CFbsBitGc *Gc();

NewL()

Cria uma instância da classe de acesso direto à tela, e a adiciona ao escalonador ativo atual.

static CDirectScreenAccess *NewL (RWsSession &aWs, CWsScreenDevice 
&aScreenDevice, RWindowBase &aWin, MDirectScreenAccess &aAbort);

ScreenDevice()

Recupera a tela onde as operações de desenho serão realizadas.

inline CFbsScreenDevice *&ScreenDevice();

StartL()

Informa o servidor de janelas que o acesso direto à tela será iniciado, de modo que um contexto gráfico será criado para que seja possível desenhar na tela.

void StartL();

Observações

A interface MDirectScreenAccess deve ser usada para reiniciar o acesso direto à tela, quando for necessário.

virtual void Restart (RDirectScreenAccess::TTerminationReasons aReason)=0;

Essa função é chamada pelo servidor de janelas para indicar que o acesso direto pode ser reiniciado.

Essa função deve chamar o método StartL() da classe CDirectScreenAccess. É importante observar que esse método pode gerar um abandono ("leave"), que deve ser capturado. Caso um abandono seja gerado, significa que o acesso direto não pode ser reiniciado. Quando o método StartL() for executado, a área permitida para desenho será recalculada. Isso significa que se o acesso foi interrompido porque outra janela foi sobreposta à janela que estava sendo desenhada, essa janela sobreposta não será sobrescrita quando o acesso direto for reiniciado.

Links

This page was last modified on 9 December 2011, at 04:45.
324 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.

×