共用方式為


CRect::SubtractRect

將維度 CRect 等於 lpRectSrc2 減法由 lpRectSrc1。

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

參數

  • lpRectSrc1
    為矩形要減去的 的長度 結構或 CRect 物件。

  • lpRectSrc2
    會從矩形減去所指向的 lpRectSrc1 參數的 RECT 結構或 CRect 物件。

傳回值

如果不是零,則函式成功,則為 0。

備註

減法是 lpRectScr1 包含所有的點不在 lpRectScr1 和 lpRectScr2 交集的最小矩形。

如果 lpRectSrc2 指定矩形未完整重疊 lpRectSrc1 指定矩形在其中至少有一個 X 或 Y 方向中, lpRectSrc1 指定矩形會保持不變。

例如,如果 lpRectSrc1 ,為 (10,10, 100,100),並 lpRectSrc2 為 (50,50, 150,150) 的矩形,指向 lpRectSrc1 不變,則函式會傳回。如果 lpRectSrc1 為 (10,10, 100,100),並 lpRectSrc2 為 (50,10, 150,150),但是,矩形所指向的 lpRectSrc1 將包含座標 (10,10, 50,100),則函式會傳回。

SubtractRect-運算子 也不 - =運算子。這些運算子不會呼叫 SubtractRect

注意事項注意事項

兩個矩形必須正規化或這個函式可能會失敗。您可以呼叫 NormalizeRect 在呼叫這個函式前正常化矩形。

範例

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

需求

Header: atltypes.h

請參閱

參考

CRect 類別

階層架構圖

CRect::operator -

CRect::operator - =

CRect::IntersectRect

CRect::UnionRect

CRect::NormalizeRect

SubtractRect