Classe CRectTracker
Permite que um item seja exibido, movido e redimensionado de diferentes modos.
Sintaxe
class CRectTracker
Membros
Construtores públicos
Nome | Descrição |
---|---|
CRectTracker::CRectTracker | Constrói um objeto CRectTracker . |
Métodos públicos
Nome | Descrição |
---|---|
CRectTracker::AdjustRect | Chamado quando o retângulo é redimensionado. |
CRectTracker::Draw | Renderiza o retângulo. |
CRectTracker::DrawTrackerRect | Chamado ao desenhar a borda de um objeto CRectTracker . |
CRectTracker::GetHandleMask | Chamado para obter a máscara das alças de redimensionamento de um item CRectTracker . |
CRectTracker::GetTrueRect | Retorna largura e altura do retângulo, incluindo alças de redimensionamento. |
CRectTracker::HitTest | Retorna a posição atual do cursor relacionada ao objeto CRectTracker . |
CRectTracker::NormalizeHit | Normaliza um código de teste de ocorrência. |
CRectTracker::OnChangedRect | Chamado quando o retângulo foi redimensionado ou movido. |
CRectTracker::SetCursor | Define o cursor, dependendo de sua posição sobre o retângulo. |
CRectTracker::Track | Permite que o usuário manipule o retângulo. |
CRectTracker::TrackRubberBand | Permite que o usuário "estenda" a seleção. |
Membros de Dados Públicos
Nome | Descrição |
---|---|
CRectTracker::m_nHandleSize | Determina o tamanho das alças de redimensionamento. |
CRectTracker::m_nStyle | Estilos atuais do rastreador. |
CRectTracker::m_rect | Posição atual (em pixels) do retângulo. |
CRectTracker::m_sizeMin | Determina a largura e a altura mínimas do retângulo. |
Comentários
CRectTracker
não tem uma classe base.
Embora a classe CRectTracker
tenha sido projetada para permitir que o usuário interaja com itens OLE usando uma interface gráfica, seu uso não é restrito a aplicativos habilitados para OLE. Ele pode ser usado em qualquer lugar em que essa interface do usuário é necessária.
As bordas do CRectTracker
podem ser linhas sólidas ou pontilhadas. O item pode receber uma borda hachurada ou sobreposta com um padrão hachurado para indicar estados diferentes do item. Você pode colocar oito alças de redimensionamento na borda externa ou interna do item. (Para uma explicação das alças de redimensionamento, confira GetHandleMask.) Por fim, um CRectTracker
permite alterar a orientação de um item durante o redimensionamento.
Para usar CRectTracker
, construa um objeto CRectTracker
e especifique quais estados de exibição são inicializados. Você então pode usar essa interface para fornecer ao usuário comentários visuais sobre o status atual do item OLE associado ao objeto CRectTracker
.
Para mais informações sobre como usar CRectTracker
, confira o artigo Rastreadores.
Hierarquia de herança
CRectTracker
Requisitos
Cabeçalho: afxext.h
CRectTracker::AdjustRect
Chamado pela estrutura quando o retângulo de acompanhamento é redimensionado usando uma alça de redimensionamento.
virtual void AdjustRect(
int nHandle,
LPRECT lpRect);
Parâmetros
nHandle
Índice da alça usada.
lpRect
Ponteiro para o tamanho atual do retângulo. (O tamanho de um retângulo é dado por sua altura e largura.)
Comentários
O comportamento padrão dessa função permite que a orientação do retângulo seja alterada somente quando Track
e TrackRubberBand
são chamados com inversão permitida.
Substitua essa função para controlar o ajuste do retângulo de acompanhamento durante uma operação de arrastar. Um método é ajustar as coordenadas especificadas pelo lpRect antes de retornar.
Recursos especiais que não têm suporte direto por CRectTracker
, como encaixar na grade ou manter proporção, podem ser implementados substituindo essa função.
CRectTracker::CRectTracker
Cria e inicializa um objeto CRectTracker
.
CRectTracker();
CRectTracker(
LPCRECT lpSrcRect,
UINT nStyle);
Parâmetros
lpSrcRect
As coordenadas do objeto de retângulo.
nEstilo
Especifica o estilo do objeto CRectTracker
. Há suporte para os seguintes estilos:
CRectTracker::solidLine
Usar uma linha sólida para a borda do retângulo.CRectTracker::dottedLine
Usar uma linha pontilhada para a borda do retângulo.CRectTracker::hatchedBorder
Usar um padrão eclodido para a borda do retângulo.CRectTracker::resizeInside
Alças de redimensionamento localizadas dentro do retângulo.CRectTracker::resizeOutside
Alças de redimensionamento localizadas fora do retângulo.CRectTracker::hatchInside
O padrão hachurado cobre todo o retângulo.
Comentários
O construtor padrão inicializa o objeto CRectTracker
com os valores de lpSrcRect e inicializa outros tamanhos para padrões do sistema. Se o objeto for criado sem parâmetros, os membros de dados m_rect
e m_nStyle
não serão inicializados.
CRectTracker::Draw
Chame essa função para desenhar as linhas externas e a região interna do retângulo.
void Draw(CDC* pDC) const;
Parâmetros
pDC
Ponteiro para o contexto do dispositivo no qual desenhar.
Comentários
O estilo do rastreador determina como o desenho é feito. Para obter mais informações sobre os estilos disponíveis, confira o construtor para CRectTracker
.
CRectTracker::DrawTrackerRect
Chamado pela estrutura sempre que a posição do rastreador tiver sido alterada dentro da função de membro Track
ou TrackRubberBand
.
virtual void DrawTrackerRect(
LPCRECT lpRect,
CWnd* pWndClipTo,
CDC* pDC,
CWnd* pWnd);
Parâmetros
lpRect
Ponteiro para o RECT
que contém o retângulo a ser desenhado.
pWndClipTo
Ponteiro para a janela a ser usada no recorte do retângulo.
pDC
Ponteiro para o contexto do dispositivo no qual desenhar.
pWnd
Ponteiro para a janela na qual o desenho ocorrerá.
Comentários
A implementação padrão faz uma chamada para CDC::DrawFocusRect
, que desenha um retângulo pontilhado.
Substitua essa função para fornecer comentários diferentes durante a operação de acompanhamento.
CRectTracker::GetHandleMask
A estrutura chama essa função de membro para recuperar a máscara para alças de redimensionamento de um retângulo.
virtual UINT GetHandleMask() const;
Valor de retorno
A máscara das alças de redimensionamento de um item CRectTracker
.
Comentários
As alças de redimensionamento aparecem nos lados e cantos do retângulo e permitem que o usuário controle a forma e o tamanho do retângulo.
Um retângulo tem oito alças de redimensionamento numeradas de 0 a 7. Cada alça de redimensionamento é representado por um bit na máscara; o valor desse bit é 2^ n, em que n é o número da alça de redimensionamento. Os bits 0-3 correspondem às alças de redimensionamento de canto, começando no canto superior esquerdo e se movendo no sentido horário. Os bits 4-7 correspondem às alças de redimensionamento laterais começando na parte superior e se movendo no sentido horário. A seguinte ilustração mostra as alças de redimensionamento de um retângulo e seus valores e números de alças de redimensionamento correspondentes:
A implementação padrão de GetHandleMask
retorna a máscara dos bits para que as alças de redimensionamento apareçam. Se o bit único estiver ativado, a alça de redimensionamento correspondente será desenhada.
Substitua essa função de membro para ocultar ou mostrar as alças de redimensionamento indicadas.
CRectTracker::GetTrueRect
Chame essa função para recuperar as coordenadas do retângulo.
void GetTrueRect(LPRECT lpTrueRect) const;
Parâmetros
lpTrueRect
Ponteiro para a estrutura RECT
que conterá as coordenadas do dispositivo do objeto CRectTracker
.
Comentários
As dimensões do retângulo incluem a altura e a largura de todas as alças de redimensionamento localizadas na borda externa. Ao retornar, lpTrueRect sempre é um retângulo normalizado nas coordenadas do dispositivo.
CRectTracker::HitTest
Chame essa função para descobrir se o usuário pegou uma alça de redimensionamento.
int HitTest(CPoint point) const;
Parâmetros
point
O ponto, nas coordenadas do dispositivo, para testar.
Valor de retorno
O valor retornado é baseado no tipo enumerado CRectTracker::TrackerHit
e pode ter um dos seguintes valores:
CRectTracker::hitNothing
-1CRectTracker::hitTopLeft
0CRectTracker::hitTopRight
1CRectTracker::hitBottomRight
2CRectTracker::hitBottomLeft
3CRectTracker::hitTop
4CRectTracker::hitRight
5CRectTracker::hitBottom
6CRectTracker::hitLeft
7CRectTracker::hitMiddle
8
CRectTracker::m_nHandleSize
O tamanho, em pixels, das alças de redimensionamento do CRectTracker
.
int m_nHandleSize;
Comentários
Inicializado com o valor padrão do sistema.
CRectTracker::m_rect
A posição atual do retângulo nas coordenadas do cliente (pixels).
CRect m_rect;
CRectTracker::m_sizeMin
O tamanho mínimo do retângulo.
CSize m_sizeMin;
Comentários
Ambos os valores padrão, cx
e cy
, são calculados com base no valor padrão do sistema para a largura da borda. Esse membro de dados é usado apenas pela função de membro AdjustRect
.
CRectTracker::m_nStyle
O estilo atual do retângulo.
UINT m_nStyle;
Comentários
Confira CRectTracker::CRectTracker para uma lista de estilos possíveis.
CRectTracker::NormalizeHit
Chame essa função para converter uma alça potencialmente invertida.
int NormalizeHit(int nHandle) const;
Parâmetros
nHandle
Alça selecionada pelo usuário.
Valor de retorno
O índice da alça normalizada.
Comentários
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 isso acontecer, HitTest
retornará alças que também são invertidas em relação ao retângulo. Isso é inapropriado para desenhar comentários de cursor porque os comentários dependem da posição da tela do retângulo, não da parte da estrutura de dados do retângulo que será modificada.
CRectTracker::OnChangedRect
Chamado pela estrutura sempre que o retângulo rastreador foi alterado durante uma chamada para Track
.
virtual void OnChangedRect(const CRect& rectOld);
Parâmetros
rectOld
Contém as coordenadas antigas do dispositivo do objeto CRectTracker
.
Comentários
No momento em que essa função é chamada, todos os comentários desenhados com DrawTrackerRect
foram removidos. A implementação padrão dessa função não faz nada.
Substitua essa função quando você quiser executar qualquer ação depois que o retângulo for redimensionado.
CRectTracker::SetCursor
Chame essa função para alterar a forma do cursor enquanto ela estiver sobre a região CRectTracker
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 clique anterior, da mensagem WM_SETCURSOR.
Valor de retorno
Não zero se o clique anterior foi sobre o retângulo rastreador; caso contrário, 0.
Comentários
Chame essa função de dentro da função da janela que manipula a mensagem WM_SETCURSOR (normalmente OnSetCursor
).
CRectTracker::Track
Chame essa função para exibir a interface do usuário para redimensionar o retângulo.
BOOL Track(
CWnd* pWnd,
CPoint point,
BOOL bAllowInvert = FALSE,
CWnd* pWndClipTo = NULL);
Parâmetros
pWnd
O objeto de janela que contém o retângulo.
point
Coordenadas do dispositivo da posição atual do mouse em relação à área de cliente.
bAllowInvert
Se TRUE, o retângulo poderá ser invertido ao longo do eixo x ou do eixo y; caso contrário, FALSE.
pWndClipTo
A janela na qual as operações de desenho serão cortadas. Se NULL, pWnd será usado como retângulo de recorte.
Valor de retorno
Se a tecla ESC for pressionada, o processo de acompanhamento será interrompido, o retângulo armazenado no rastreador não será alterado e 0 será retornado. Se a alteração for confirmada, movendo o mouse e liberando o botão esquerdo do mouse, a nova posição e/ou tamanho será registrado no retângulo do rastreador e o não zero será retornado.
Comentários
Isso geralmente é chamado de dentro da função do aplicativo que manipula a mensagem WM_LBUTTONDOWN
(normalmente OnLButtonDown
).
Essa função capturará o mouse até que o usuário libere o botão esquerdo do mouse, pressione a tecla ESC ou pressione o botão direito do mouse. À medida que o usuário move o cursor do mouse, os comentários são atualizados chamando DrawTrackerRect
e OnChangedRect
.
Se bAllowInvert for TRUE, o retângulo de acompanhamento poderá ser invertido no eixo x ou eixo y.
CRectTracker::TrackRubberBand
Chame essa função para fazer a seleção de elástico.
BOOL TrackRubberBand(
CWnd* pWnd,
CPoint point,
BOOL bAllowInvert = TRUE);
Parâmetros
pWnd
O objeto de janela que contém o retângulo.
point
Coordenadas do dispositivo da posição atual do mouse em relação à área de cliente.
bAllowInvert
Se TRUE, o retângulo poderá ser invertido ao longo do eixo x ou do eixo y; caso contrário, FALSE.
Valor de retorno
Não zero se o mouse tiver se movido e o retângulo não estiver vazio; caso contrário, 0.
Comentários
Geralmente, é chamado de dentro da função do aplicativo que manipula a mensagem WM_LBUTTONDOWN (normalmente OnLButtonDown
).
Essa função capturará o mouse até que o usuário libere o botão esquerdo do mouse, pressione a tecla ESC ou pressione o botão direito do mouse. À medida que o usuário move o cursor do mouse, os comentários são atualizados chamando DrawTrackerRect
e OnChangedRect
.
O acompanhamento é executado com uma seleção de tipo de elástico da alça inferior direita. Se a inversão for permitida, o retângulo poderá ser dimensionado arrastando-o para cima e para a esquerda ou para baixo e para a direita.
Confira também
RASTREADOR de exemplo MFC
DRAWCLI de exemplo do MFC
Gráfico da hierarquia
Classe COleResizeBar
Classe CRect