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ć CRectTracker
metody , 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 CRectTracker
funkcję , 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:
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
-1CRectTracker::hitTopLeft
0CRectTracker::hitTopRight
1CRectTracker::hitBottomRight
2CRectTracker::hitBottomLeft
3CRectTracker::hitTop
4CRectTracker::hitRight
5CRectTracker::hitBottom
6CRectTracker::hitLeft
7CRectTracker::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