Freigeben über


CRect::SubtractRect

Macht die Dimensionen von CRect gleich der Subtraktion von lpRectSrc2 von lpRectSrc1.

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

Parameter

  • lpRectSrc1
    Zeigt auf RECT-Struktur oder zu CRect-Objekt, aus denen ein Rechteck subtrahiert werden soll.

  • lpRectSrc2
    Zeigt auf RECT-Struktur oder zu CRect-Objekt, die vom Rechteck subtrahiert werden soll, das an den lpRectSrc1-Parameter angezeigt wird.

Rückgabewert

Ungleich 0 (null), wenn die Funktion erfolgreich; 0 andernfalls.

Hinweise

Die Subtraktion ist das kleinste Rechteck, das alle Punkte in lpRectScr1 enthält, die nicht in der Schnittmenge von lpRectScr1 und von lpRectScr2 sind.

Das Rechteck, das durch lpRectSrc1 angegeben wird, wird nicht geändert, wenn das Rechteck, das durch lpRectSrc2 angegeben wird, nicht vollständig sich das Rechteck schneidet, das mindestens über lpRectSrc1 in einer des x oder der YRichtungen angegeben wird.

Wenn lpRectSrc1 (10,10, 100.100) waren und lpRectSrc2 waren (50,50, 150.150), wird das Rechteck, das auf durch lpRectSrc1 gezeigt wurde, unverändert sein, als die Funktion zurückgibt. Wenn lpRectSrc1 (10,10, 100.100) waren und lpRectSrc2 waren (50,10, 150.150), jedoch wird das Rechteck, das auf durch lpRectSrc1 gezeigt wurde, die Koordinaten (10,10, 50.100) enthalten als die Funktion zurückgibt.

SubtractRect ist nicht das selbe wie Operator - noch Operator - =. Keiner dieser Operatoren ruft eine SubtractRect auf.

Hinweis

Beide der Rechtecke müssen normalisiert werden, oder diese Funktion schlägt möglicherweise aus.Sie können NormalizeRect aufrufen, um die Rechtecke zu normalisieren, bevor Sie diese Funktion aufrufen.

Beispiel

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);   

Anforderungen

Header: atltypes.h

Siehe auch

Referenz

CRect Class

Hierarchiediagramm

CRect::operator -

CRect::operator -=

CRect::IntersectRect

CRect::UnionRect

CRect::NormalizeRect

SubtractRect