Поделиться через


CRect::SubtractRect

Делает измерения CRect равно вычитанию lpRectSrc2 из lpRectSrc1.

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

Параметры

  • lpRectSrc1
    Указывает на RECT составляющих или объекту CRect, из которого прямоугольник быть вычитанным.

  • lpRectSrc2
    Указывает на RECT составляющих или объекту CRect, вычитанным из прямоугольника, указанного в параметре lpRectSrc1.

Возвращаемое значение

Ненулевой если функция успешно; в противном случае – значение 0.

Заметки

Вычитание наименьший прямоугольник, содержащий все точки в lpRectScr1, не входящие в пересечении lpRectScr1 и lpRectScr2.

Прямоугольник не изменяется, если прямоугольник указанный lpRectSrc1 будет указанный lpRectSrc2 не полностью перекрывает прямоугольник указанный lpRectSrc1 в крайней мере в одном из направлений осях x и y.

Например, если было 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