Udostępnij za pośrednictwem


Klasa CRectTracker

Umożliwia wyświetlanie, przenoszenie i zmienianie rozmiaru elementu w inny sposób.

Składnia

class CRectTracker

Elementy członkowskie

Konstruktory publiczne

Nazwa/nazwisko opis
CRectTracker::CRectTracker CRectTracker Tworzy obiekt.

Metody publiczne

Nazwa/nazwisko opis
CRectTracker::AdjustRect Wywoływana po zmianie rozmiaru prostokąta.
CRectTracker::D raw Renderuje prostokąt.
CRectTracker::D rawTrackerRect Wywoływana podczas rysowania obramowania CRectTracker obiektu.
CRectTracker::GetHandleMask Wywołana w celu pobrania maski uchwytów CRectTracker zmiany rozmiaru elementu.
CRectTracker::GetTrueRect Zwraca szerokość i wysokość prostokąta, w tym uchwyty zmiany rozmiaru.
CRectTracker::HitTest Zwraca bieżącą pozycję kursora powiązanego z obiektem CRectTracker .
CRectTracker::NormalizeHit Normalizuje kod testu trafień.
CRectTracker::OnChangedRect Wywoływana, gdy prostokąt został zmieniony lub przeniesiony.
CRectTracker::SetCursor Ustawia kursor w zależności od położenia na prostokątze.
CRectTracker::Track Umożliwia użytkownikowi manipulowanie prostokątem.
CRectTracker::TrackRubberBand Umożliwia użytkownikowi wybranie opcji "gumy".

Publiczne elementy członkowskie danych

Nazwa/nazwisko opis
CRectTracker::m_nHandleSize Określa rozmiar uchwytów zmiany rozmiaru.
CRectTracker::m_nStyle Bieżące style trackera.
CRectTracker::m_rect Bieżące położenie (w pikselach) prostokąta.
CRectTracker::m_sizeMin Określa minimalną szerokość i wysokość prostokąta.

Uwagi

CRectTracker nie ma klasy bazowej.

CRectTracker Mimo że klasa została zaprojektowana tak, aby umożliwić użytkownikowi interakcję z elementami OLE przy użyciu interfejsu graficznego, jego użycie nie jest ograniczone do aplikacji z obsługą ole. Można go używać w dowolnym miejscu, w jakim jest wymagany interfejs użytkownika.

CRectTracker obramowania mogą być liniami stałymi lub kropkowanych. Element może mieć wykluwane obramowanie lub nakładane na wzór kreskowany, aby wskazać różne stany elementu. Na zewnątrz lub wewnątrz obramowania elementu można umieścić osiem uchwytów zmiany rozmiaru. (Aby uzyskać wyjaśnienie uchwytów zmiany rozmiaru, zobacz GetHandleMask.) Na koniec element CRectTracker umożliwia zmianę orientacji elementu podczas zmiany rozmiaru.

Aby użyć CRectTrackermetody , skonstruuj CRectTracker obiekt i określ, które stany wyświetlania są inicjowane. Następnie możesz użyć tego interfejsu, aby przekazać użytkownikowi opinię na temat bieżącego stanu elementu OLE skojarzonego z obiektem CRectTracker .

Aby uzyskać więcej informacji na temat korzystania z usługi CRectTracker, zobacz artykuł Trackery.

Hierarchia dziedziczenia

CRectTracker

Wymagania

Nagłówek: afxext.h

CRectTracker::AdjustRect

Wywoływana przez platformę, gdy rozmiar prostokąta śledzenia jest zmieniany przy użyciu uchwytu zmiany rozmiaru.

virtual void AdjustRect(
    int nHandle,
    LPRECT lpRect);

Parametry

nHandle
Indeks używanego uchwytu.

lpRect
Wskaźnik do bieżącego rozmiaru prostokąta. (Rozmiar prostokąta jest podawany przez jego wysokość i szerokość).

Uwagi

Domyślne zachowanie tej funkcji umożliwia zmianę orientacji prostokąta tylko wtedy, gdy Track i TrackRubberBand są wywoływane z niedozwolonym odwracaniem.

Zastąpi tę funkcję, aby kontrolować korektę prostokąta śledzenia podczas operacji przeciągania. Jedną z metod jest dostosowanie współrzędnych określonych przez lpRect przed zwróceniem.

Specjalne funkcje, które nie są bezpośrednio obsługiwane przez CRectTrackerfunkcję , takie jak przyciąganie do siatki lub współczynnik proporcji keep,, można zaimplementować przez zastąpienie tej funkcji.

CRectTracker::CRectTracker

Tworzy i inicjuje CRectTracker obiekt.

CRectTracker();

CRectTracker(
    LPCRECT lpSrcRect,
    UINT nStyle);

Parametry

lpSrcRect
Współrzędne obiektu prostokąta.

nStyle
Określa styl CRectTracker obiektu. Obsługiwane są następujące style:

  • CRectTracker::solidLine Użyj linii stałej dla obramowania prostokąta.

  • CRectTracker::dottedLine Użyj linii kropkowanej dla obramowania prostokąta.

  • CRectTracker::hatchedBorder Użyj wzorca kreskowanego dla obramowania prostokąta.

  • CRectTracker::resizeInside Zmienia rozmiar uchwytów znajdujących się wewnątrz prostokąta.

  • CRectTracker::resizeOutside Zmienia rozmiar uchwytów znajdujących się poza prostokątem.

  • CRectTracker::hatchInside Wzór kreskowany obejmuje cały prostokąt.

Uwagi

Domyślny konstruktor inicjuje CRectTracker obiekt z wartościami z lpSrcRect i inicjuje inne rozmiary do domyślnych ustawień systemowych. Jeśli obiekt zostanie utworzony bez parametrów, składowe m_rect danych i m_nStyle są niezainicjowane.

CRectTracker::D raw

Wywołaj tę funkcję, aby narysować zewnętrzne linie prostokąta i region wewnętrzny.

void Draw(CDC* pDC) const;

Parametry

PDC
Wskaźnik do kontekstu urządzenia, na którym ma być rysowanie.

Uwagi

Styl trackera określa sposób wykonywania rysunku. Aby uzyskać więcej informacji na temat dostępnych stylów, zobacz konstruktor CRectTracker .

CRectTracker::D rawTrackerRect

Wywoływana przez platformę za każdym razem, gdy pozycja trackera zmieniła się wewnątrz Track funkcji lub TrackRubberBand składowej.

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

Parametry

lpRect
Wskaźnik do RECT , który zawiera prostokąt do rysowania.

pWndClipTo
Wskaźnik do okna do użycia w przycinaniu prostokąta.

PDC
Wskaźnik do kontekstu urządzenia, na którym ma być rysowanie.

pWnd
Wskaźnik do okna, w którym zostanie wyświetlony rysunek.

Uwagi

Domyślna implementacja wywołuje metodę CDC::DrawFocusRect, która rysuje prostokąt kropkowany.

Zastąpi tę funkcję, aby przekazać różne opinie podczas operacji śledzenia.

CRectTracker::GetHandleMask

Struktura wywołuje tę funkcję składową, aby pobrać maskę dla uchwytów zmiany rozmiaru prostokąta.

virtual UINT GetHandleMask() const;

Wartość zwracana

Maska uchwytów zmiany rozmiaru CRectTracker elementu.

Uwagi

Uchwyty zmiany rozmiaru są wyświetlane po bokach i rogach prostokąta i umożliwiają użytkownikowi sterowanie kształtem i rozmiarem prostokąta.

Prostokąt ma 8 uchwytów zmiany rozmiaru numerowanych od 0 do 7. Każdy uchwyt zmiany rozmiaru jest reprezentowany przez nieco w masce; wartość tego bitu to 2^ n, gdzie n to numer uchwytu zmiany rozmiaru. Bity 0-3 odpowiadają uchwytom zmiany rozmiaru rogu, zaczynając od lewego górnego rogu przesuwając się zgodnie z ruchem wskazówek zegara. Bity 4-7 odpowiadają uchwytom zmiany rozmiaru bocznego rozpoczynającym się od góry przesuwając się zgodnie z ruchem wskazówek zegara. Na poniższej ilustracji przedstawiono uchwyty zmiany rozmiaru prostokąta oraz odpowiadające im liczby i wartości uchwytu zmiany rozmiaru:

Zmień rozmiar numerów dojść.

Domyślna implementacja polecenia GetHandleMask zwraca maskę bitów, aby pojawić się uchwyty zmiany rozmiaru. Jeśli pojedynczy bit jest włączony, odpowiedni uchwyt zmiany rozmiaru zostanie narysowany.

Zastąpi tę funkcję składową, aby ukryć lub pokazać wskazane uchwyty zmiany rozmiaru.

CRectTracker::GetTrueRect

Wywołaj tę funkcję, aby pobrać współrzędne prostokąta.

void GetTrueRect(LPRECT lpTrueRect) const;

Parametry

lpTrueRect
Wskaźnik do RECT struktury, która będzie zawierać współrzędne CRectTracker urządzenia obiektu.

Uwagi

Wymiary prostokąta obejmują wysokość i szerokość wszelkich uchwytów zmiany rozmiaru znajdujących się na obramowanie zewnętrzne. Po powrocie lpTrueRect jest zawsze znormalizowanym prostokątem we współrzędnych urządzenia.

CRectTracker::HitTest

Wywołaj tę funkcję, aby dowiedzieć się, czy użytkownik chwycił uchwyt zmiany rozmiaru.

int HitTest(CPoint point) const;

Parametry

punkt
Punkt we współrzędnych urządzenia do przetestowania.

Wartość zwracana

Zwrócona wartość jest oparta na wyliczonym typie CRectTracker::TrackerHit i może mieć jedną z następujących wartości:

  • 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

Rozmiar uchwytów zmiany rozmiaru CRectTracker w pikselach.

int m_nHandleSize;

Uwagi

Zainicjowane przy użyciu domyślnej wartości systemowej.

CRectTracker::m_rect

Bieżąca pozycja prostokąta we współrzędnych klienta (pikseli).

CRect m_rect;

CRectTracker::m_sizeMin

Minimalny rozmiar prostokąta.

CSize m_sizeMin;

Uwagi

Zarówno wartości domyślne, cx jak i cy, są obliczane na podstawie domyślnej wartości systemowej szerokości obramowania. Ten element członkowski danych jest używany tylko przez funkcję składową AdjustRect .

CRectTracker::m_nStyle

Bieżący styl prostokąta.

UINT m_nStyle;

Uwagi

Aby uzyskać listę możliwych stylów, zobacz CRectTracker::CRectTracker .

CRectTracker::NormalizeHit

Wywołaj tę funkcję, aby przekonwertować potencjalnie odwrócony uchwyt.

int NormalizeHit(int nHandle) const;

Parametry

nHandle
Obsługa wybrana przez użytkownika.

Wartość zwracana

Indeks znormalizowanego uchwytu.

Uwagi

Gdy CRectTracker::Track lub CRectTracker::TrackRubberBand jest wywoływany z niedozwolonym odwróceniem, prostokąt może być odwrócony na osi x, osi y lub obu tych elementów. W takim przypadku HitTest funkcja zwróci uchwyty, które również są odwrócone względem prostokąta. Jest to nieodpowiednie w przypadku rysowania opinii kursora, ponieważ opinia zależy od położenia ekranu prostokąta, a nie części struktury danych prostokąta, która zostanie zmodyfikowana.

CRectTracker::OnChangedRect

Wywoływana przez platformę za każdym razem, gdy prostokąt trackera uległ zmianie podczas wywołania metody Track.

virtual void OnChangedRect(const CRect& rectOld);

Parametry

rectOld
Zawiera stare współrzędne CRectTracker urządzenia obiektu.

Uwagi

W momencie wywołania tej funkcji wszystkie opinie narysowane za pomocą DrawTrackerRect polecenia zostały usunięte. Domyślna implementacja tej funkcji nic nie robi.

Zastąpi tę funkcję, gdy chcesz wykonać jakiekolwiek akcje po zmianie rozmiaru prostokąta.

CRectTracker::SetCursor

Wywołaj tę funkcję, aby zmienić kształt kursora w CRectTracker regionie obiektu.

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

Parametry

pWnd
Wskazuje okno, które obecnie zawiera kursor.

nHitTest
Wyniki poprzedniego testu trafienia z komunikatu WM_SETCURSOR.

Wartość zwracana

Nonzero, jeśli poprzednie trafienie było na prostokąt trackera; w przeciwnym razie 0.

Uwagi

Wywołaj tę funkcję z wewnątrz funkcji okna, która obsługuje komunikat WM_SETCURSOR (zazwyczaj OnSetCursor).

CRectTracker::Track

Wywołaj tę funkcję, aby wyświetlić interfejs użytkownika na potrzeby zmiany rozmiaru prostokąta.

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

Parametry

pWnd
Obiekt okna zawierający prostokąt.

punkt
Współrzędne urządzenia bieżącej pozycji myszy względem obszaru klienta.

bAllowInvert
Jeśli wartość TRUE, prostokąt może być odwrócony wzdłuż osi x lub osi y; w przeciwnym razie FAŁSZ.

pWndClipTo
Okno, do którego zostaną obcięte operacje rysowania. Jeśli wartość NULL, pWnd jest używana jako prostokąt wycinki.

Wartość zwracana

Jeśli ESC zostanie naciśnięty, proces śledzenia zostanie zatrzymany, prostokąt przechowywany w trackerze nie zostanie zmieniony i zostanie zwrócony 0. Jeśli zmiana zostanie zatwierdzona, przesuwając mysz i zwalniając lewy przycisk myszy, zwracana jest nowa pozycja i/lub rozmiar w prostokątze trackera i niezerowym.

Uwagi

Jest to zwykle wywoływane z wewnątrz funkcji aplikacji, która obsługuje WM_LBUTTONDOWN komunikat (zazwyczaj OnLButtonDown).

Ta funkcja przechwytuje mysz, dopóki użytkownik nie zwolni lewego przycisku myszy, naciśnie ESC lub naciśnie prawy przycisk myszy. Gdy użytkownik przesuwa kursor myszy, opinia jest aktualizowana przez wywołanie DrawTrackerRect i OnChangedRect.

Jeśli parametr bAllowInvert ma wartość TRUE, prostokąt śledzenia można odwrócić na osi x lub y.

CRectTracker::TrackRubberBand

Wywołaj tę funkcję, aby wykonać wybór gumy.

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

Parametry

pWnd
Obiekt okna zawierający prostokąt.

punkt
Współrzędne urządzenia bieżącej pozycji myszy względem obszaru klienta.

bAllowInvert
Jeśli wartość TRUE, prostokąt może być odwrócony wzdłuż osi x lub osi y; w przeciwnym razie FAŁSZ.

Wartość zwracana

Niezero, jeśli mysz została przeniesiona, a prostokąt nie jest pusty; w przeciwnym razie 0.

Uwagi

Zwykle jest wywoływana z wewnątrz funkcji aplikacji, która obsługuje komunikat WM_LBUTTONDOWN (zazwyczaj OnLButtonDown).

Ta funkcja przechwytuje mysz, dopóki użytkownik nie zwolni lewego przycisku myszy, naciśnie ESC lub naciśnie prawy przycisk myszy. Gdy użytkownik przesuwa kursor myszy, opinia jest aktualizowana przez wywołanie DrawTrackerRect i OnChangedRect.

Śledzenie jest wykonywane z gumowym wyborem typu band z prawego dojścia. Jeśli odwrócenie jest dozwolone, prostokąt może mieć rozmiar, przeciągając w górę i w lewo lub w dół i po prawej stronie.

Zobacz też

Przykładowy TRACKER MFC
Przykład MFC DRAWCLI
Wykres hierarchii
Klasa COleResizeBar
CRect, klasa