Udostępnij za pośrednictwem


CRect::SubtractRect

Powoduje, że wymiary CRect równa odejmowanie lpRectSrc2 z lpRectSrc1.

BOOL SubtractRect( 
   LPCRECT lpRectSrc1, 
   LPCRECT lpRectSrc2  
) throw( );

Parametry

  • lpRectSrc1
    Wskazuje na RECT struktury lub CRect obiektu, z którego ma zostać odjęta prostokąta.

  • lpRectSrc2
    Wskazuje na RECT struktury lub CRect obiekt, który ma zostać odjęta od prostokąta wskazywanej przez lpRectSrc1 parametru.

Wartość zwracana

Niezerowa, jeśli funkcja jest pomyślne; 0 inaczej.

Uwagi

Odejmowania jest najmniejszego prostokąta, który zawiera wszystkie punkty w lpRectScr1 , nie są w miejscu przecięcia lpRectScr1 i lpRectScr2.

Prostokąt, określony przez lpRectSrc1 pozostaje bez zmian, jeśli prostokąt określony przez lpRectSrc2 nie całkowicie przykrywa prostokąt określony przez lpRectSrc1 w co najmniej jednym z x - i y kierunkach.

Na przykład jeśli lpRectSrc1 zostały (10,10, 100,100) i lpRectSrc2 zostały (50,50, 150,150), prostokąt wskazywanej przez lpRectSrc1 byłaby niezmieniona, gdy wartość zwrócona przez funkcję.Jeśli lpRectSrc1 zostały (10,10, 100,100) i lpRectSrc2 zostały (50,10, 150,150), jednak prostokąta wskazywanej przez lpRectSrc1 będzie zawierać współrzędne (10,10, 50,100) kiedy wartość zwrócona przez funkcję.

SubtractRectnie jest tym samym operator - ani operator-=.Żadna z tych operatorów kiedykolwiek wywołuje SubtractRect.

[!UWAGA]

Muszą być zarówno prostokąty znormalizowane lub tej funkcji może się nie powieść.Można wywołać NormalizeRect do znormalizowania prostokąty przed wywołaniem tej funkcji.

Przykład

RECT   rectOne;
RECT   rectTwo;

rectOne.left = 10;
rectOne.top = 10;
rectOne.bottom = 100;
rectOne.right = 100;

rectTwo.left = 50;
rectTwo.top = 10;
rectTwo.bottom = 150;
rectTwo.right = 150;

CRect   rectDiff;

rectDiff.SubtractRect(&rectOne, &rectTwo);

CRect   rectResult(10, 10, 50, 100);

ASSERT(rectDiff == rectResult);

// works for CRect, too, since there is
// implicit CRect -> LPCRECT conversion

CRect rect1(10, 10, 100, 100);
CRect rect2(50, 10, 150, 150);
CRect rectOut;

rectOut.SubtractRect(rect1, rect2);
ASSERT(rectResult == rectOut);   

Wymagania

Nagłówek: atltypes.h

Zobacz też

Informacje

Klasa CRect

Wykres hierarchii

CRect::operator-

CRect::operator-=

CRect::IntersectRect

CRect::UnionRect

CRect::NormalizeRect

SubtractRect