Condividi tramite


CRect::SubtractRect

Apportare le dimensioni CRect uguale alla sottrazione lpRectSrc2 da lpRectSrc1.

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

Parametri

  • lpRectSrc1
    I punti su RECT struttura o all'oggetto CRect da un rettangolo deve essere rimossi.

  • lpRectSrc2
    Punta a RECT struttura o all'oggetto CRect che devono essere sottratti dal rettangolo puntato dal parametro lpRectSrc1.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario 0.

Note

La differenza è il più piccolo rettangolo che contenga tutti i passaggi in lpRectScr1 non inclusi nell'intersezione lpRectScr1 e di lpRectScr2.

Il rettangolo specificato da lpRectSrc1 verrà invariato se il rettangolo specificato da lpRectSrc2 completamente non si sovrappone al rettangolo specificato da lpRectSrc1 in almeno una x o y le direzioni.

Ad esempio, se lpRectSrc1 è (10,10, 100.100) e lpRectSrc2 è (50,50, 150.150), il rettangolo puntato da lpRectSrc1 sarebbe invariato quando la funzione ha restituito.Se lpRectSrc1 è (10,10, 100.100) e lpRectSrc2 è (50,10, 150.150), tuttavia, il rettangolo puntato da lpRectSrc1 può contenere le coordinate (10,10, 50.100) quando la funzione ha restituito.

SubtractRect non sarà uguale operator -operator - =.Nessuno di questi operatori chiama mai SubtractRect.

[!NOTA]

Entrambi i rettangoli devono essere normalizzati o la funzione può non riuscire.È possibile chiamare NormalizeRect per normalizzare i rettangoli prima di chiamare la funzione.

Esempio

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

Requisiti

Header: atltypes.h

Vedere anche

Riferimenti

Classe di CRect

Grafico della gerarchia

CRect::operator -

CRect::operator - =

CRect::IntersectRect

CRect::UnionRect

CRect::NormalizeRect

SubtractRect