Partilhar via


Classe CRectTracker

Observação

A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Permite que um item seja exibido, movido e redimensionado de diferentes formas.

Sintaxe

class CRectTracker

Membros

Construtores Públicos

Nome Description
CRectTracker::CRectTracker Constrói um CRectTracker objeto.

Métodos Públicos

Nome Description
CRectTracker::AdjustRect Chamada quando o retângulo é redimensionado.
CRectTracker::D raw Renderiza o retângulo.
CRectTracker::D rawTrackerRect Chamado ao desenhar a borda de um CRectTracker objeto.
CRectTracker::GetHandleMask Chamado para obter a máscara das alças de redimensionamento de um CRectTracker item.
CRectTracker::GetTrueRect Devolve largura e altura do retângulo, incluindo pegas de redimensionamento.
CRectTracker::HitTest Devolve a posição atual do cursor relacionada com o CRectTracker objeto.
CRectTracker::NormalizeHit Normaliza um código de teste de acerto.
CRectTracker::OnChangedRect Chamada quando o retângulo foi redimensionado ou movido.
CRectTracker::SetCursor Define o cursor, dependendo da sua posição sobre o retângulo.
CRectTracker::Track Permite ao utilizador manipular o retângulo.
CRectTracker::TrackRubberBand Permite ao utilizador "elástico" a seleção.

Membros de Dados Públicos

Nome Description
CRectTracker::m_nHandleSize Determina o tamanho das pegas de redimensionamento.
CRectTracker::m_nStyle Estilo(s) atual(is) do tracker.
CRectTracker::m_rect Posição atual (em pixels) do retângulo.
CRectTracker::m_sizeMin Determina a largura e altura mínimas do retângulo.

Observações

CRectTracker não tem uma classe base.

Embora a CRectTracker classe tenha sido concebida para permitir ao utilizador interagir com itens OLE através de uma interface gráfica, a sua utilização não se restringe a aplicações com capacidade OLE. Pode ser usado em qualquer lugar que tal interface de utilizador seja necessária.

CRectTracker As fronteiras podem ser sólidas ou linhas pontilhadas. O item pode receber uma borda com hachute ou ser sobreposto com um padrão de hachuras para indicar diferentes estados do item. Pode colocar oito pegas de redimensionamento tanto na borda exterior como na interior do item. (Para uma explicação das alavancas de redimensionamento, veja GetHandleMask.) Finalmente, a CRectTracker permite alterar a orientação de um item durante o redimensionamento.

Para usar CRectTracker, constrói um CRectTracker objeto e especifique quais os estados de exibição que são inicializados. Pode então usar esta interface para dar ao utilizador feedback visual sobre o estado atual do item OLE associado ao CRectTracker objeto.

Para mais informações sobre o uso CRectTrackerde , consulte o artigo Rastreadores.

Hierarquia de herança

CRectTracker

Requerimentos

Cabeçalho: afxext.h

CRectTracker::AdjustRect

Chamado pelo framework quando o retângulo de seguimento é redimensionado usando uma alavanca de redimensionamento.

virtual void AdjustRect(
    int nHandle,
    LPRECT lpRect);

Parâmetros

nHandle
Índice do cabo utilizado.

lpRect
Apontar para o tamanho atual do retângulo. (O tamanho de um retângulo é dado pela sua altura e largura.)

Observações

O comportamento padrão desta função permite que a orientação do retângulo só mude quando Track e TrackRubberBand são chamados com a inversão permitida.

Anule esta função para controlar o ajuste do retângulo de seguimento durante uma operação de arrasto. Um método é ajustar as coordenadas especificadas pelo lpRect antes de regressar.

Funcionalidades especiais que não são diretamente suportadas por CRectTracker, como snap-to-grid ou keep-aspect-ratio, podem ser implementadas sobrepondo esta função.

CRectTracker::CRectTracker

Cria e inicializa um CRectTracker objeto.

CRectTracker();

CRectTracker(
    LPCRECT lpSrcRect,
    UINT nStyle);

Parâmetros

lpSrcRect
As coordenadas do objeto retangular.

nStyle
Especifica o estilo do CRectTracker objeto. Os seguintes estilos são suportados:

  • CRectTracker::solidLine Use uma linha contínua para a borda retangular.

  • CRectTracker::dottedLine Use uma linha pontilhada para a borda retangular.

  • CRectTracker::hatchedBorder Use um padrão de hachura para a borda retangular.

  • CRectTracker::resizeInside Puxadores de redimensionamento localizados dentro do retângulo.

  • CRectTracker::resizeOutside Puxadores de redimensionamento localizados fora do retângulo.

  • CRectTracker::hatchInside O padrão de hachuras cobre todo o retângulo.

Observações

O construtor por defeito inicializa o CRectTracker objeto com os valores de lpSrcRect e inicializa outros tamanhos para os valores predefinidos do sistema. Se o objeto for criado sem parâmetros, os m_rect membros dos dados and m_nStyle não são inicializados.

CRectTracker::D raw

Chame esta função para desenhar as linhas exteriores e a região interior do retângulo.

void Draw(CDC* pDC) const;

Parâmetros

pDC
Apontar para o contexto do dispositivo onde desenhar.

Observações

O estilo do rastreador determina como o desenho é feito. Consulte o construtor para CRectTracker mais informações sobre os estilos disponíveis.

CRectTracker::D rawTrackerRect

É chamado pelo framework sempre que a posição do rastreador mudou enquanto está dentro da Track função do membro ou TrackRubberBand .

virtual void DrawTrackerRect(
    LPCRECT lpRect,
    CWnd* pWndClipTo,
    CDC* pDC,
    CWnd* pWnd);

Parâmetros

lpRect
Apontador para o RECT que contém o retângulo a desenhar.

pWndClipTo
Apontador para a janela para usar no recorte do retângulo.

pDC
Apontar para o contexto do dispositivo onde desenhar.

pWnd
Apontar para a janela onde o desenho irá ocorrer.

Observações

A implementação padrão faz uma chamada para CDC::DrawFocusRect, que desenha um retângulo pontilhado.

Anule esta função para fornecer feedback diferente durante a operação de rastreamento.

CRectTracker::GetHandleMask

A estrutura chama esta função membro para recuperar a máscara dos handles de redimensionamento de um retângulo.

virtual UINT GetHandleMask() const;

Valor de retorno

A máscara das pegas de redimensionamento de um CRectTracker item.

Observações

As pegas de redimensionamento aparecem nas laterais e cantos do retângulo e permitem ao utilizador controlar a forma e o tamanho do retângulo.

Um retângulo tem 8 pegas de redimensionamento numeradas de 0 a 7. Cada alavanca de redimensionamento é representada por um bit na máscara; O valor desse bit é 2^ N, onde n é o número da alavanca de redimensionamento. Os bits 0-3 correspondem às maçanetas de redimensionamento dos cantos, começando no canto superior esquerdo movendo-se no sentido dos ponteiros do relógio. Os bits 4-7 correspondem às alças de redimensionamento laterais que começam no topo, movendo-se no sentido dos ponteiros do relógio. A ilustração seguinte mostra as alças de redimensionamento de um retângulo e os seus correspondentes números e valores de alças de redimensionamento:

Redimensiona os números das alças.

A implementação padrão de GetHandleMask devolve a máscara dos bits para que apareçam as alças de redimensionamento. Se o bit único estiver ligado, a alavanca de redimensionamento correspondente será desenhada.

Substitua esta função de membro para ocultar ou mostrar as alavancas de redimensionamento indicadas.

CRectTracker::GetTrueRect

Chame esta função para recuperar as coordenadas do retângulo.

void GetTrueRect(LPRECT lpTrueRect) const;

Parâmetros

lpTrueRect
Apontador para a RECT estrutura que irá conter as coordenadas do dispositivo do CRectTracker objeto.

Observações

As dimensões do retângulo incluem a altura e a largura de quaisquer pegas de redimensionamento localizadas na borda exterior. Ao regressar, o lpTrueRect é sempre um retângulo normalizado nas coordenadas do dispositivo.

CRectTracker::HitTest

Ligue para esta função para saber se o utilizador escolheu uma alavanca de redimensionamento.

int HitTest(CPoint point) const;

Parâmetros

ponto
O objetivo, nas coordenadas do dispositivo, é testar.

Valor de retorno

O valor devolvido baseia-se no tipo CRectTracker::TrackerHit enumerado e pode ter um dos seguintes valores:

  • CRectTracker::hitNothing -1

  • CRectTracker::hitTopLeft 0

  • CRectTracker::hitTopRight 1

  • CRectTracker::hitBottomRight 2

  • CRectTracker::hitBottomLeft 3

  • CRectTracker::hitTop 4

  • CRectTracker::hitRight 5

  • CRectTracker::hitBottom 6

  • CRectTracker::hitLeft 7

  • CRectTracker::hitMiddle 8

CRectTracker::m_nHandleSize

O tamanho, em pixels, das CRectTracker pegas de redimensionamento.

int m_nHandleSize;

Observações

Inicializado com o valor padrão do sistema.

CRectTracker::m_rect

A posição atual do retângulo nas coordenadas do cliente (píxeis).

CRect m_rect;

CRectTracker::m_sizeMin

O tamanho mínimo do retângulo.

CSize m_sizeMin;

Observações

Ambos os valores por defeito, cx e cy, são calculados a partir do valor padrão do sistema para a largura da borda. Este membro de dados é usado apenas pela AdjustRect função membro.

CRectTracker::m_nStyle

Estilo atual do retângulo.

UINT m_nStyle;

Observações

Consulte CRectTracker::CRectTracker para uma lista de estilos possíveis.

CRectTracker::NormalizeHit

Chame esta função para converter uma alça potencialmente invertida.

int NormalizeHit(int nHandle) const;

Parâmetros

nHandle
Handle selecionado pelo utilizador.

Valor de retorno

O índice do cabo normalizado.

Observações

Quando CRectTracker::Track ou CRectTracker::TrackRubberBand é chamado com a inversão permitida, é possível que o retângulo seja invertido no eixo x, no eixo y ou em ambos. Quando isto acontecer, HitTest devolverá as alavancas que também estão invertidas em relação ao retângulo. Isto é inadequado para o feedback do cursor de desenho porque o feedback depende da posição do ecrã do retângulo, e não da parte da estrutura de dados do retângulo que será modificada.

CRectTracker::OnChangedRect

Chamada pela framework sempre que o retângulo do tracker mudou durante uma chamada para Track.

virtual void OnChangedRect(const CRect& rectOld);

Parâmetros

rectOld
Contém as coordenadas antigas do dispositivo do CRectTracker objeto.

Observações

No momento em que esta função é chamada, todo o feedback desenhado DrawTrackerRect com foi removido. A implementação padrão desta função não faz nada.

Anule esta função quando quiser realizar qualquer ação depois de o retângulo ter sido redimensionado.

CRectTracker::SetCursor

Chame esta função para alterar a forma do cursor enquanto está sobre a CRectTracker região do objeto.

BOOL SetCursor(
    CWnd* pWnd,
    UINT nHitTest) const;

Parâmetros

pWnd
Aponta para a janela que atualmente contém o cursor.

nHitTest
Resultados do teste de acerto anterior, da mensagem WM_SETCURSOR.

Valor de retorno

Diferente de zero se o impacto anterior foi sobre o retângulo do rastreador; caso contrário, 0.

Observações

Chame esta função a partir da função da sua janela que gere a mensagem de WM_SETCURSOR (tipicamente OnSetCursor).

CRectTracker::Track

Chame esta função para mostrar a interface do utilizador e redimensionar o retângulo.

BOOL Track(
    CWnd* pWnd,
    CPoint point,
    BOOL bAllowInvert = FALSE,
    CWnd* pWndClipTo = NULL);

Parâmetros

pWnd
O objeto janela que contém o retângulo.

ponto
Coordenadas do dispositivo com a posição atual do rato em relação à área do cliente.

bAllowInvert
Se TRUE, o retângulo pode ser invertido ao longo do eixo x ou y; caso contrário, FALSO.

pWndClipTo
A janela onde as operações de desenho serão recortadas. Se for NULL, pWnd é usado como retângulo de recorte.

Valor de retorno

Se a tecla ESC for pressionada, o processo de rastreamento é interrompido, o retângulo armazenado no rastreador não é alterado e o 0 é devoluído. Se a alteração for confirmada, ao mover o rato e largar o botão esquerdo do rato, a nova posição e/ou tamanho é registada no retângulo do rastreador e o valor diferente de zero é devolvido.

Observações

Isto é normalmente chamado a partir da função da sua aplicação que gere a WM_LBUTTONDOWN mensagem (tipicamente OnLButtonDown).

Esta função captura o rato até que o utilizador solte o botão esquerdo, pressione a tecla ESC ou pressione o botão direito do rato. À medida que o utilizador move o cursor do rato, o feedback é atualizado chamando DrawTrackerRect e OnChangedRect.

Se o bAllowInvert for VERDADEIRO, o retângulo de seguimento pode ser invertido tanto no eixo x como no eixo y.

CRectTracker::TrackRubberBand

Chame esta função para fazer a seleção do elástico.

BOOL TrackRubberBand(
    CWnd* pWnd,
    CPoint point,
    BOOL bAllowInvert = TRUE);

Parâmetros

pWnd
O objeto janela que contém o retângulo.

ponto
Coordenadas do dispositivo com a posição atual do rato em relação à área do cliente.

bAllowInvert
Se TRUE, o retângulo pode ser invertido ao longo do eixo x ou y; caso contrário, FALSO.

Valor de retorno

Diferente de zero se o rato se mexeu e o retângulo não estiver vazio; caso contrário, 0.

Observações

Normalmente é chamada a partir da função da sua aplicação que gere a mensagem WM_LBUTTONDOWN (tipicamente OnLButtonDown).

Esta função captura o rato até que o utilizador solte o botão esquerdo, pressione a tecla ESC ou pressione o botão direito do rato. À medida que o utilizador move o cursor do rato, o feedback é atualizado chamando DrawTrackerRect e OnChangedRect.

O rastreamento é feito com uma seleção tipo elástico a partir da pega inferior direita. Se for permitido inverter, o retângulo pode ser dimensionado arrastando-o para cima e para a esquerda ou para baixo e para a direita.

Consulte também

MFC Sample TRACKER
Exemplo MFC DRAWCLI
Gráfico de Hierarquia
Classe COleResizeBar
Classe CRect