CRect::SubtractRect

使维度 CRect 等于 lpRectSrc2 的减法由 lpRectSrc1。

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

参数

  • lpRectSrc1
    指向 RECT 矩形中减去的结构或 CRect 对象。

  • lpRectSrc2
    指向 RECT 将从矩形减去指向由 lpRectSrc1 参数的结构或 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 Class

层次结构图

CRect::operator -

CRect::operator -=

CRect::IntersectRect

CRect::UnionRect

CRect::NormalizeRect

SubtractRect