Класс CRect
Похоже на структуру Windows RECT
.
Синтаксис
class CRect : public tagRECT
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CRect::CRect |
Формирует объект CRect . |
Открытые методы
Имя | Описание |
---|---|
CRect::BottomRight |
Возвращает точку в правом CRect нижнем углу. |
CRect::CenterPoint |
Возвращает центральную точку CRect . |
CRect::CopyRect |
Копирует размеры исходного прямоугольника CRect в . |
CRect::DeflateRect |
Уменьшает ширину и высоту CRect . |
CRect::EqualRect |
Определяет, равно ли CRect заданному прямоугольнику. |
CRect::Height |
Вычисляет высоту CRect . |
CRect::InflateRect |
Увеличивает ширину и высоту CRect . |
CRect::IntersectRect |
Задает CRect значение, равное пересечению двух прямоугольников. |
CRect::IsRectEmpty |
Определяет, является ли CRect пустым. CRect значение пусто, если ширина и (или) высота равна 0. |
CRect::IsRectNull |
Определяет, равны ли top переменные элемента , bottom left и right переменные-члены равны 0. |
CRect::MoveToX |
Перемещается CRect в указанную координату x. |
CRect::MoveToXY |
Перемещается CRect к указанным координатам x и y. |
CRect::MoveToY |
Перемещается CRect в указанную координату y. |
CRect::NormalizeRect |
Стандартизирует высоту и ширину CRect . |
CRect::OffsetRect |
Перемещается CRect по указанным смещениям. |
CRect::PtInRect |
Определяет, находится ли указанная точка внутри CRect . |
CRect::SetRect |
Задает размеры CRect . |
CRect::SetRectEmpty |
Задает CRect пустой прямоугольник (все координаты равны 0). |
CRect::Size |
Вычисляет размер CRect . |
CRect::SubtractRect |
Вычитает один прямоугольник из другого. |
CRect::TopLeft |
Возвращает верхнюю левую точку CRect . |
CRect::UnionRect |
Задает CRect значение, равное союзу двух прямоугольников. |
CRect::Width |
Вычисляет ширину CRect . |
Открытые операторы
Имя | Описание |
---|---|
CRect::operator - |
Вычитает указанные смещения из CRect или дефляции CRect и возвращает результирующий CRect результат. |
CRect::operator LPCRECT |
Преобразует CRect в LPCRECT . |
CRect::operator LPRECT |
Преобразует CRect в LPRECT . |
CRect::operator != |
Определяет, не равно ли CRect прямоугольнику. |
CRect::operator & |
Создает пересечение CRect и прямоугольник и возвращает результирующий CRect объект. |
CRect::operator &= |
Задает CRect значение, равное пересечению CRect и прямоугольнику. |
CRect::operator | |
Создает объединение CRect и прямоугольник и возвращает результирующий CRect объект. |
CRect::operator |= |
Задает CRect значение, равное объединению CRect и прямоугольнику. |
CRect::operator + |
Добавляет указанные смещения CRect в или увеличивается CRect и возвращает результирующий CRect результат. |
CRect::operator += |
Добавляет указанные смещения в CRect или раздувается CRect . |
CRect::operator = |
Копирует размеры прямоугольника CRect в . |
CRect::operator -= |
Вычитает указанные смещения из CRect или отложений CRect . |
CRect::operator == |
Определяет, равно ли CRect прямоугольник. |
Замечания
CRect
также включает функции-члены для управления объектами и структурами CRect
Windows RECT
.
CRect
Объект может передаваться в качестве параметра функции, где бы ни была RECT
структура или LPCRECT
LPRECT
может быть передана.
Примечание.
Этот класс является производным tagRECT
от структуры. (Имя является менее часто используемым именем tagRECT
для RECT
структуры.) Это означает, что члены данных (left
, , right
top
иbottom
) RECT
структуры доступны для элементов CRect
данных.
Содержит CRect
переменные-члены, определяющие верхние и нижние правые точки прямоугольника.
При указании CRect
нужно тщательно создать его таким образом, чтобы оно нормализовано , иными словами, таким образом, значение левой координаты меньше правого, а верхняя — меньше нижнего. Например, верхний левый (10 10) и нижний правый (20 20 20) определяет нормализованный прямоугольник, но верхний левый (20 20 20) и нижний правый (10 10) определяет ненормализованный прямоугольник. Если прямоугольник не нормализован, многие CRect
функции-члены могут возвращать неправильные результаты. (См CRect::NormalizeRect
. список этих функций.) Перед вызовом функции, требующей нормализованных прямоугольников, можно нормализовать ненормализованные прямоугольники, вызвав функцию NormalizeRect
.
Используйте осторожность при управлении CRect
функциями-членами и CDC::LPtoDP
функциями-членамиCDC::DPtoLP
. Если режим сопоставления контекста отображения такой, что степень y является отрицательной, как и в MM_LOENGLISH
, то CDC::DPtoLP
преобразуется CRect
таким образом, чтобы его верхняя часть была больше нижней. Такие функции, как Height
и Size
затем возвращают отрицательные значения для высоты преобразованного CRect
, и прямоугольник будет не нормализован.
При использовании перегруженных CRect
операторов первый операнд должен иметь значение CRect
; второе может быть RECT
структурой CRect
или объектом.
Иерархия наследования
tagRECT
CRect
Требования
Заголовок: atltypes.h
CRect::BottomRight
Координаты возвращаются в качестве ссылки на CPoint
объект, содержащийся в CRect
.
CPoint& BottomRight() throw();
const CPoint& BottomRight() const throw();
Возвращаемое значение
Координаты нижнего правого угла прямоугольника.
Замечания
Эту функцию можно использовать для получения или задания нижнего правого угла прямоугольника. Задайте угол с помощью этой функции слева от оператора назначения.
Пример
// use BottomRight() to retrieve the bottom
// right POINT
CRect rect(210, 150, 350, 900);
CPoint ptDown;
ptDown = rect.BottomRight();
// ptDown is now set to (350, 900)
ASSERT(ptDown == CPoint(350, 900));
// or, use BottomRight() to set the bottom
// right POINT
CRect rect2(10, 10, 350, 350);
CPoint ptLow(180, 180);
CRect rect2(10, 10, 350, 350);
CPoint ptLow(180, 180);
rect2.BottomRight() = ptLow;
// rect2 is now (10, 10, 180, 180)
ASSERT(rect2 == CRect(10, 10, 180, 180));
CRect::CenterPoint
Вычисляет центральную точку CRect
путем добавления левых и правых значений и деления на два, а также добавления верхних и нижних значений и деления на два.
CPoint CenterPoint() const throw();
Возвращаемое значение
CPoint
Объект, представляющий собой центральную точкуCRect
.
Пример
// Code from this OnPaint() implementation can be pasted into your own application
// to draw lines that would look like a letter "Y" within your dialog.
void CMyDlg::OnPaint()
{
CPaintDC dc(this);
// device context for painting
// get the size and position of the client area of
// your window
CRect rect;
GetClientRect(&rect);
// Move the current pen to the top left of the window. We call the
// TopLeft() member of CRect here and it returns a CPoint object we
// pass to the override of CDC::MoveTo() that accepts a CPoint.
dc.MoveTo(rect.TopLeft());
// Draw a line from the top left to the center of the window.
// CenterPoint() gives us the middle point of the window as a
// CPoint, and since CDC::LineTo() has an override that accepts a
// CPoint, we can just pass it along.
dc.LineTo(rect.CenterPoint());
// Now, draw a line to the top right of the window. There's no
// CRect member which returns a CPoint for the top right of the
// window, so we'll reference the CPoint members directly and call
// the CDC::LineTo() override which takes two integers.
dc.LineTo(rect.right, rect.top);
// The top part of the "Y" is drawn. Now, we'll draw the stem. We
// start from the center point.
dc.MoveTo(rect.CenterPoint());
// and then draw to the middle of the bottom edge of the window.
// We'll get the x-coordinate from the x member of the CPOINT
// returned by CenterPoint(), and the y value comes directly from
// the rect.
dc.LineTo(rect.CenterPoint().x, rect.bottom);
}
CRect::CopyRect
Копирует lpSrcRect
прямоугольник в CRect
.
void CopyRect(LPCRECT lpSrcRect) throw();
Параметры
lpSrcRect
Указывает на структуру RECT
или CRect
объект, который нужно скопировать.
Пример
CRect rectSource(35, 10, 125, 10);
CRect rectDest;
rectDest.CopyRect(&rectSource);
// rectDest is now set to (35, 10, 125, 10)
RECT rectSource2;
rectSource2.left = 0;
rectSource2.top = 0;
rectSource2.bottom = 480;
rectSource2.right = 640;
rectDest.CopyRect(&rectSource2);
// works against RECT structures, too!
// rectDest is now set to (0, 0, 640, 480)
CRect::CRect
Формирует объект CRect
.
CRect() throw();
CRect(int l, int t, int r, int b) throw();
CRect(const RECT& srcRect) throw();
CRect(LPCRECT lpSrcRect) throw();
CRect(POINT point, SIZE size) throw();
CRect(POINT topLeft, POINT bottomRight) throw();
Параметры
l
Указывает левую позицию CRect
.
t
Указывает верхнюю часть CRect
.
r
Указывает правильную позицию CRect
.
b
Указывает нижнее CRect
значение .
srcRect
Ссылается на структуру RECT
с координатами.CRect
lpSrcRect
Указывает на структуру RECT
с координатами для CRect
.
point
Указывает точку источника для созданного прямоугольника. Соответствует левому верхнему углу.
size
Указывает перемещение из левого верхнего угла в правый нижний угол прямоугольника, который будет построен.
topLeft
Указывает верхнюю левую позицию CRect
.
bottomRight
Указывает нижнее правое положение CRect
.
Замечания
Если аргументы не заданы, left
, , right
top
и bottom
члены имеют значение 0.
CRect
Конструкторы (const RECT&
) и CRect
(LPCRECT
) выполняют .CopyRect
Другие конструкторы инициализируют переменные-члены объекта напрямую.
Пример
// default constructor is equivalent to CRect(0, 0, 0, 0)
CRect emptyRect;
// four-integers are left, top, right, and bottom
CRect rect(0, 0, 100, 50);
ASSERT(rect.Width() == 100);
ASSERT(rect.Height() == 50);
// Initialize from RECT structure
RECT sdkRect;
sdkRect.left = 0;
sdkRect.top = 0;
sdkRect.right = 100;
sdkRect.bottom = 50;
CRect rect2(sdkRect);
// by reference
CRect rect3(&sdkRect);
// by address
ASSERT(rect2 == rect);
ASSERT(rect3 == rect);
// from a point and a size
CPoint pt(0, 0);
CSize sz(100, 50);
CRect rect4(pt, sz);
ASSERT(rect4 == rect2);
// from two points
CPoint ptBottomRight(100, 50);
CRect rect5(pt, ptBottomRight);
ASSERT(rect5 == rect4);
CRect::DeflateRect
DeflateRect
дефляция путем CRect
перемещения сторон к центру.
void DeflateRect(int x, int y) throw();
void DeflateRect(SIZE size) throw();
void DeflateRect(LPCRECT lpRect) throw();
void DeflateRect(int l, int t, int r, int b) throw();
Параметры
x
Указывает количество единиц, которые нужно отложить в левой и правой CRect
части.
y
Указывает количество единиц, которые нужно отложить сверху и внизу CRect
.
size
A SIZE
или CSize
указывает количество единиц для дефляции CRect
. Значение cx
указывает количество единиц, которые нужно отложить слева и справа, а cy
значение указывает количество единиц, которые нужно отложить сверху и внизу.
lpRect
Указывает на RECT
структуру или CRect
указывает количество единиц для разложения каждой стороны.
l
Указывает количество единиц для дефляции левой CRect
стороны.
t
Указывает количество единиц, которые нужно отложить в верхней части CRect
.
r
Указывает количество единиц для дефляции правой CRect
стороны.
b
Указывает количество единиц, которые нужно отложить в нижней CRect
части.
Замечания
Для этого DeflateRect
добавьте единицы влево и сверху и вычитает единицы из правого и нижнего. Параметры DeflateRect
подписываются значения; положительные значения деффулируются CRect
и отрицательные значения раздувают его.
Первые две перегрузки сдувают обе пары противоположных сторон CRect
таким образом, чтобы ее общая ширина снизилась на два раза (илиcx
) и ее общая высота уменьшается на два раза x
y
(илиcy
). Остальные две перегрузки перегружают каждую сторону CRect
независимо от других.
Пример
CRect rect(10, 10, 50, 50);
rect.DeflateRect(1, 2);
ASSERT(rect.left == 11 && rect.right == 49);
ASSERT(rect.top == 12 && rect.bottom == 48);
CRect rect2(10, 10, 50, 50);
CRect rectDeflate(1, 2, 3, 4);
rect2.DeflateRect(&rectDeflate);
ASSERT(rect2.left == 11 && rect2.right == 47);
ASSERT(rect2.top == 12 && rect2.bottom == 46);
CRect::EqualRect
Определяет, равно ли CRect
заданному прямоугольнику.
BOOL EqualRect(LPCRECT lpRect) const throw();
Параметры
lpRect
Указывает на RECT
структуру или CRect
объект, содержащий координаты прямоугольника в левом верхнем и правом нижнем углу.
Возвращаемое значение
Ненулевое значение, если два прямоугольника имеют одинаковые верхние, левые, нижние и правые значения; в противном случае — 0.
Примечание.
Оба прямоугольника должны быть нормализованы или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect
нормализацию прямоугольников.
Пример
CRect rect1(35, 150, 10, 25);
CRect rect2(35, 150, 10, 25);
CRect rect3(98, 999, 6, 3);
ASSERT(rect1.EqualRect(rect2));
ASSERT(!rect1.EqualRect(rect3));
// works just fine against RECTs, as well
RECT test;
test.left = 35;
test.top = 150;
test.right = 10;
test.bottom = 25;
ASSERT(rect1.EqualRect(&test));
CRect::Height
Вычисляет высоту CRect
путем вычитания верхнего значения из нижнего значения.
int Height() const throw();
Возвращаемое значение
Высота CRect
.
Замечания
Полученное значение может быть отрицательным.
Примечание.
Прямоугольник должен быть нормализован или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect
нормализацию прямоугольника.
Пример
CRect rect(20, 30, 80, 70);
int nHt = rect.Height();
// nHt is now 40
ASSERT(nHt == 40);
CRect::InflateRect
InflateRect
раздувается CRect
, перемещая стороны от своего центра.
void InflateRect(int x, int y) throw();
void InflateRect(SIZE size) throw();
void InflateRect(LPCRECT lpRect) throw();
void InflateRect(int l, int t, int r, int b) throw();
Параметры
x
Указывает количество единиц для раздувания левой и правой CRect
сторон.
y
Указывает количество единиц для раздувания верхней и нижней CRect
части.
size
A SIZE
или CSize
указывает количество единиц для раздувания CRect
. Значение cx
указывает количество единиц для раздувания левой и правой сторон, а cy
значение указывает количество единиц для раздувания верхнего и нижнего.
lpRect
Указывает на RECT
структуру или CRect
указывает количество единиц для раздувания каждой стороны.
l
Указывает количество единиц для раздувания левой CRect
стороны.
t
Указывает количество единиц для раздувания верхней части CRect
.
r
Указывает количество единиц для раздувания правой CRect
стороны.
b
Указывает количество единиц для раздувания нижней CRect
части.
Замечания
Для этого InflateRect
вычитает единицы из левого и верхнего и добавляет единицы вправо и вниз. Параметры InflateRect
подписываются значения; положительные значения раздуваются и отрицательные значения деффулируют CRect
его.
Первые две перегрузки раздувают обе пары противоположных сторонCRect
, чтобы ее общая ширина увеличилась в два раза (илиcx
) и ее общая высота увеличивается на два раза x
y
(илиcy
). Другие две перегрузки раздувают каждую сторону CRect
независимо от других.
Пример
CRect rect(0, 0, 300, 300);
rect.InflateRect(50, 200);
// rect is now (-50, -200, 350, 500)
ASSERT(rect == CRect(-50, -200, 350, 500));
CRect::IntersectRect
Делает равным CRect
пересечению двух существующих прямоугольников.
BOOL IntersectRect(LPCRECT lpRect1, LPCRECT lpRect2) throw();
Параметры
lpRect1
Указывает на структуру или CRect
объект, содержащий исходный RECT
прямоугольник.
lpRect2
Указывает на структуру или CRect
объект, содержащий исходный RECT
прямоугольник.
Возвращаемое значение
Ненулевое значение, если пересечение не является пустым; Значение 0, если пересечение пусто.
Замечания
Пересечение является крупнейшим прямоугольником, содержащимся в обоих существующих прямоугольниках.
Примечание.
Оба прямоугольника должны быть нормализованы или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect
нормализацию прямоугольников.
Пример
CRect rectOne(125, 0, 150, 200);
CRect rectTwo(0, 75, 350, 95);
CRect rectInter;
rectInter.IntersectRect(rectOne, rectTwo);
ASSERT(rectInter == CRect(125, 75, 150, 95));
// operator &= can do the same task:
CRect rectInter2 = rectOne;
rectInter2 &= rectTwo;
ASSERT(rectInter2 == CRect(125, 75, 150, 95));
CRect::IsRectEmpty
Определяет, является ли CRect
пустым.
BOOL IsRectEmpty() const throw();
Возвращаемое значение
Ненулевое значение, если CRect
пусто; 0, если CRect
не пусто.
Замечания
Прямоугольник пуст, если ширина и(или) высота равна 0 или отрицательно. Отличается от IsRectNull
того, что определяет, равны ли все координаты прямоугольника нулю.
Примечание.
Прямоугольник должен быть нормализован или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect
нормализацию прямоугольника.
Пример
CRect rectNone(0, 0, 0, 0);
CRect rectSome(35, 50, 135, 150);
ASSERT(rectNone.IsRectEmpty());
ASSERT(!rectSome.IsRectEmpty());
CRect rectEmpty(35, 35, 35, 35);
ASSERT(rectEmpty.IsRectEmpty());
CRect::IsRectNull
Определяет, равны ли значения верхнего, левого, нижнего и правого значений CRect
равны 0.
BOOL IsRectNull() const throw();
Возвращаемое значение
Ненулевое значение, если CRect
верхние, левые, нижние и правые значения равны 0; в противном случае — 0.
Замечания
Отличается от IsRectEmpty
, который определяет, является ли прямоугольник пустым.
Пример
CRect rectNone(0, 0, 0, 0);
CRect rectSome(35, 50, 135, 150);
ASSERT(rectNone.IsRectNull());
ASSERT(!rectSome.IsRectNull());
// note that null means _all_ zeros
CRect rectNotNull(0, 0, 35, 50);
ASSERT(!rectNotNull.IsRectNull());
CRect::MoveToX
Вызовите эту функцию, чтобы переместить прямоугольник в абсолютную координату x, указанную в x
формате .
void MoveToX(int x) throw();
Параметры
x
Абсолютная координата x для левого верхнего угла прямоугольника.
Пример
CRect rect(0, 0, 100, 100);
rect.MoveToX(10);
// rect is now (10, 0, 110, 100);
ASSERT(rect == CRect(10, 0, 110, 100));
CRect::MoveToXY
Вызовите эту функцию, чтобы переместить прямоугольник в абсолютные координаты x и y.
void MoveToXY(int x, int y) throw();
void MoveToXY(POINT point) throw();
Параметры
x
Абсолютная координата x для левого верхнего угла прямоугольника.
y
Абсолютная координата y для левого верхнего угла прямоугольника.
point
Структура POINT
, указывающая абсолютный левый верхний угол прямоугольника.
Пример
CRect rect(0, 0, 100, 100);
rect.MoveToXY(10, 10);
// rect is now (10, 10, 110, 110);
ASSERT(rect == CRect(10, 10, 110, 110));
CRect::MoveToY
Вызовите эту функцию, чтобы переместить прямоугольник в абсолютную координату y, указанную .y
void MoveToY(int y) throw();
Параметры
y
Абсолютная координата y для левого верхнего угла прямоугольника.
Пример
CRect rect(0, 0, 100, 100);
rect.MoveToY(10);
// rect is now (0, 10, 100, 110);
ASSERT(rect == CRect(0, 10, 100, 110));
CRect::NormalizeRect
Нормализует значение CRect
, чтобы высота и ширина были положительными.
void NormalizeRect() throw();
Замечания
Прямоугольник нормализуется для размещения четвертого квадранта, который Windows обычно использует для координат. NormalizeRect
сравнивает верхние и нижние значения и переключает их, если верхняя часть больше нижней. Аналогичным образом, он переключает значения слева и справа, если левая больше правой. Эта функция полезна при работе с различными режимами сопоставления и перевернутыми прямоугольниками.
Примечание.
Следующие CRect
функции-члены требуют нормализованных прямоугольников для правильной работы: Height
, operator |=
EqualRect
PtInRect
UnionRect
IsRectEmpty
IntersectRect
SubtractRect
Size
Width
operator !=
operator |
operator ==
operator &
и .operator &=
Пример
CRect rect1(110, 100, 250, 310);
CRect rect2(250, 310, 110, 100);
rect1.NormalizeRect();
rect2.NormalizeRect();
ASSERT(rect1 == rect2);
CRect::OffsetRect
Перемещается CRect
по указанным смещениям.
void OffsetRect(int x, int y) throw();
void OffsetRect(POINT point) throw();
void OffsetRect(SIZE size) throw();
Параметры
x
Указывает сумму для перемещения влево или вправо. Он должен быть отрицательным для перемещения влево.
y
Указывает сумму для перемещения вверх или вниз. Он должен быть отрицательным, чтобы двигаться вверх.
point
Содержит структуру или CPoint
объект, указывающий POINT
оба измерения, по которым следует перемещаться.
size
Содержит структуру или CSize
объект, указывающий SIZE
оба измерения, по которым следует перемещаться.
Замечания
Перемещает CRect
x
единицы вдоль оси x и y
единиц вдоль оси Y. И x
y
параметры подписываются значениями, поэтому CRect
их можно переместить влево или вправо и вниз.
Пример
CRect rect(0, 0, 35, 35);
rect.OffsetRect(230, 230);
// rect is now (230, 230, 265, 265)
ASSERT(rect == CRect(230, 230, 265, 265));
CRect::operator LPCRECT
Преобразует объект CRect
в LPCRECT
объект .
operator LPCRECT() const throw();
Замечания
При использовании этой функции не требуется оператор адреса (&
). Этот оператор будет автоматически использоваться при передаче CRect
объекта в функцию, которая ожидает.LPCRECT
CRect::operator LPRECT
Преобразует CRect
в LPRECT
.
operator LPRECT() throw();
Замечания
При использовании этой функции не требуется оператор адреса (&
). Этот оператор будет автоматически использоваться при передаче CRect
объекта в функцию, которая ожидает.LPRECT
Пример
Пример см. в примере CRect::operator LPCRECT
.
CRect::operator =
srcRect
CRect
Назначается .
void operator=(const RECT& srcRect) throw();
Параметры
srcRect
Ссылается на исходный прямоугольник. Может быть или RECT
CRect
.
Пример
CRect rect(0, 0, 127, 168);
CRect rect2;
rect2 = rect;
ASSERT(rect2 == CRect(0, 0, 127, 168));
CRect::operator ==
Определяет, равен CRect
ли rect
он, сравнивая координаты их верхних и правых углов в правом верхнем углу.
BOOL operator==(const RECT& rect) const throw();
Параметры
rect
Ссылается на исходный прямоугольник. Может быть или RECT
CRect
.
Возвращаемое значение
Ненулевое значение, если равно; в противном случае — 0.
Замечания
Примечание.
Оба прямоугольника должны быть нормализованы или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect
нормализацию прямоугольников.
Пример
CRect rect1(35, 150, 10, 25);
CRect rect2(35, 150, 10, 25);
CRect rect3(98, 999, 6, 3);
ASSERT(rect1 == rect2);
// works just fine against RECTs, as well
RECT test;
test.left = 35;
test.top = 150;
test.right = 10;
test.bottom = 25;
ASSERT(rect1 == test);
CRect::operator !=
Определяет, не равен CRect
ли rect
он, сравнивая координаты их верхних и правых углов в правом верхнем углу.
BOOL operator!=(const RECT& rect) const throw();
Параметры
rect
Ссылается на исходный прямоугольник. Может быть или RECT
CRect
.
Возвращаемое значение
Ненулевое значение, если оно не равно; в противном случае — 0.
Замечания
Примечание.
Оба прямоугольника должны быть нормализованы или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect
нормализацию прямоугольников.
Пример
CRect rect1(35, 150, 10, 25);
CRect rect2(35, 150, 10, 25);
CRect rect3(98, 999, 6, 3);
ASSERT(rect1 != rect3);
// works just fine against RECTs, as well
RECT test;
test.left = 35;
test.top = 150;
test.right = 10;
test.bottom = 25;
ASSERT(rect3 != test);
CRect::operator +=
Первые две перегрузки перемещаются CRect
по указанным смещениям.
void operator+=(POINT point) throw();
void operator+=(SIZE size) throw();
void operator+=(LPCRECT lpRect) throw();
Параметры
point
POINT
Структура или CPoint
объект, указывающий количество единиц для перемещения прямоугольника.
size
SIZE
Структура или CSize
объект, указывающий количество единиц для перемещения прямоугольника.
lpRect
Указывает на RECT
структуру или CRect
объект, содержащий количество единиц для раздувания каждой CRect
стороны.
Замечания
Значения параметра x
и y
(или cx
cy
) добавляются CRect
в .
Третья перегрузка увеличивается CRect
по количеству единиц, указанных в каждом элементе параметра.
Пример
CRect rect1(100, 235, 200, 335);
CPoint pt(35, 65);
CRect rect2(135, 300, 235, 400);
rect1 += pt;
ASSERT(rect1 == rect2);
CRect::operator -=
Первые две перегрузки перемещаются CRect
по указанным смещениям.
void operator-=(POINT point) throw();
void operator-=(SIZE size) throw();
void operator-=(LPCRECT lpRect) throw();
Параметры
point
POINT
Структура или CPoint
объект, указывающий количество единиц для перемещения прямоугольника.
size
SIZE
Структура или CSize
объект, указывающий количество единиц для перемещения прямоугольника.
lpRect
Указывает на RECT
структуру или CRect
объект, содержащий количество единиц для дефляции каждой CRect
стороны.
Замечания
x
Значения параметра и y
(или cx
cy
) вычитаются из CRect
.
Третья перегрузка отклоняется CRect
по количеству единиц, указанных в каждом элементе параметра. Обратите внимание, что эта перегрузка выполняет такие функции, как DeflateRect
.
Пример
CRect rect1(100, 235, 200, 335);
CPoint pt(35, 65);
rect1 -= pt;
CRect rectResult(65, 170, 165, 270);
ASSERT(rect1 == rectResult);
CRect::operator &=
Задает CRect
значение, равное пересечению CRect
и rect
.
void operator&=(const RECT& rect) throw();
Параметры
rect
Содержит или RECT
CRect
.
Замечания
Пересечение — это самый большой прямоугольник, содержащийся в обоих прямоугольниках.
Примечание.
Оба прямоугольника должны быть нормализованы или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect
нормализацию прямоугольников.
Пример
Пример см. в примере CRect::IntersectRect
.
CRect::operator |=
Задает CRect
значение, равное объединению CRect
и rect
.
void operator|=(const RECT& rect) throw();
Параметры
rect
Содержит или CRect
RECT
.
Замечания
Объединение — это самый маленький прямоугольник, содержащий оба исходных прямоугольника.
Примечание.
Оба прямоугольника должны быть нормализованы или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect
нормализацию прямоугольников.
Пример
CRect rect1(100, 0, 200, 300);
CRect rect2(0, 100, 300, 200);
rect1 |= rect2;
CRect rectResult(0, 0, 300, 300);
ASSERT(rectResult == rect1);
CRect::operator +
Первые две перегрузки возвращают CRect
объект, равный CRect
перемещенным указанным смещениям.
CRect operator+(POINT point) const throw();
CRect operator+(LPCRECT lpRect) const throw();
CRect operator+(SIZE size) const throw();
Параметры
point
POINT
Структура или CPoint
объект, указывающий количество единиц для перемещения возвращаемого значения.
size
SIZE
Структура или CSize
объект, указывающий количество единиц для перемещения возвращаемого значения.
lpRect
Указывает на RECT
структуру или CRect
объект, содержащий количество единиц для раздувания каждой стороны возвращаемого значения.
Возвращаемое значение
Результат CRect
перемещения или раздуния CRect
по количеству единиц, указанных в параметре.
Замечания
x
Параметры параметра и y
(или cx
cy
) добавляются в CRect
положение.
Третья перегрузка возвращает новое CRect
значение, CRect
равное количеству единиц, указанных в каждом элементе параметра.
Пример
CRect rect1(100, 235, 200, 335);
CPoint pt(35, 65);
CRect rect2;
rect2 = rect1 + pt;
CRect rectResult(135, 300, 235, 400);
ASSERT(rectResult == rect2);
CRect::operator -
Первые две перегрузки возвращают CRect
объект, равный CRect
перемещенным указанным смещениям.
CRect operator-(POINT point) const throw();
CRect operator-(SIZE size) const throw();
CRect operator-(LPCRECT lpRect) const throw();
Параметры
point
POINT
Структура или CPoint
объект, указывающий количество единиц для перемещения возвращаемого значения.
size
SIZE
Структура или CSize
объект, указывающий количество единиц для перемещения возвращаемого значения.
lpRect
Указывает на RECT
структуру или CRect
объект, содержащий количество единиц для дефляции каждой стороны возвращаемого значения.
Возвращаемое значение
Результат CRect
перемещения или дефляирования CRect
по количеству единиц, указанных в параметре.
Замечания
Параметры параметра x
и y
(или cx
cy
) вычитаются из CRect
позиции.
Третья перегрузка возвращает новое CRect
значение, равное CRect
сложенным по количеству единиц, указанных в каждом элементе параметра. Обратите внимание, что эта перегрузка, например DeflateRect
, не SubtractRect
.
Пример
CRect rect1(100, 235, 200, 335);
CPoint pt(35, 65);
CRect rect2;
rect2 = rect1 - pt;
CRect rectResult(65, 170, 165, 270);
ASSERT(rect2 == rectResult);
CRect::operator &
Возвращает значение CRect
, которое является пересечением CRect
и прямоугольникой2.
CRect operator&(const RECT& rect2) const throw();
Параметры
rect2
Содержит или RECT
CRect
.
Возвращаемое значение
А CRect
это пересечение CRect
и rect2
.
Замечания
Пересечение — это самый большой прямоугольник, содержащийся в обоих прямоугольниках.
Примечание.
Оба прямоугольника должны быть нормализованы или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect
нормализацию прямоугольников.
Пример
CRect rect1(100, 0, 200, 300);
CRect rect2(0, 100, 300, 200);
CRect rect3;
rect3 = rect1 & rect2;
CRect rectResult(100, 100, 200, 200);
ASSERT(rectResult == rect3);
CRect::operator |
CRect
Возвращает объединение CRect
и rect2
.
CRect operator|(const RECT&
rect2) const throw();
Параметры
rect2
Содержит или RECT
CRect
.
Возвращаемое значение
А CRect
это объединение CRect
и rect2
.
Замечания
Объединение — это самый маленький прямоугольник, содержащий оба прямоугольника.
Примечание.
Оба прямоугольника должны быть нормализованы или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect
нормализацию прямоугольников.
Пример
CRect rect1(100, 0, 200, 300);
CRect rect2(0, 100, 300, 200);
CRect rect3;
rect3 = rect1 | rect2;
CRect rectResult(0, 0, 300, 300);
ASSERT(rectResult == rect3);
CRect::PtInRect
Определяет, находится ли указанная точка внутри CRect
.
BOOL PtInRect(POINT point) const throw();
Параметры
point
Содержит структуру POINT
или CPoint
объект.
Возвращаемое значение
Ненулевое значение, если точка находится в CRect
пределах; в противном случае — 0.
Замечания
Точка находится внутри CRect
, если она находится на левой или верхней стороне или находится в пределах всех четырех сторон. Точка на правой или нижней стороне находится вне CRect
.
Примечание.
Прямоугольник должен быть нормализован или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect
нормализацию прямоугольника.
Пример
CRect rect(5, 5, 100, 100);
CPoint pt1(35, 50);
CPoint pt2(125, 298);
// this is true, because pt1 is inside the rectangle
ASSERT(rect.PtInRect(pt1));
// this is NOT true, because pt2 is outside the rectangle
ASSERT(!rect.PtInRect(pt2));
// note that the right and the bottom aren't inside
ASSERT(!rect.PtInRect(CPoint(35, 100)));
ASSERT(!rect.PtInRect(CPoint(100, 98)));
// but the top and the left are inside
ASSERT(rect.PtInRect(CPoint(5, 65)));
ASSERT(rect.PtInRect(CPoint(88, 5)));
// and that PtInRect() works against a POINT, too
POINT pt;
pt.x = 35;
pt.y = 50;
ASSERT(rect.PtInRect(pt));
CRect::SetRect
Задает размеры CRect
заданных координат.
void SetRect(int x1, int y1, int x2, int y2) throw();
Параметры
x1
Указывает координату x верхнего левого угла.
y1
Задает координату y верхнего левого угла.
x2
Задает координату x правого нижнего угла.
y2
Задает координату y правого нижнего угла.
Пример
CRect rect;
rect.SetRect(256, 256, 512, 512);
ASSERT(rect == CRect(256, 256, 512, 512));
CRect::SetRectEmpty
Делает CRect
прямоугольник null, задав все координаты равным нулю.
void SetRectEmpty() throw();
Пример
CRect rect;
rect.SetRectEmpty();
// rect is now (0, 0, 0, 0)
ASSERT(rect.IsRectEmpty());
CRect::SIZE
cy
Элементы cx
возвращаемого значения содержат высоту и ширинуCRect
.
CSize Size() const throw();
Возвращаемое значение
Объект CSize
, содержащий размер CRect
.
Замечания
Высота или ширина могут быть отрицательными.
Примечание.
Прямоугольник должен быть нормализован или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect
нормализацию прямоугольника.
Пример
CRect rect(10, 10, 50, 50);
CSize sz = rect.Size();
ASSERT(sz.cx == 40 && sz.cy == 40);
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);
CRect::TopLeft
Координаты возвращаются в качестве ссылки на CPoint
объект, содержащийся в CRect
.
CPoint& TopLeft() throw();
const CPoint& TopLeft() const throw();
Возвращаемое значение
Координаты левого верхнего угла прямоугольника.
Замечания
Эту функцию можно использовать для получения или задания левого верхнего угла прямоугольника. Задайте угол с помощью этой функции слева от оператора назначения.
Пример
Пример см. в примере CRect::CenterPoint
.
CRect::UnionRect
Делает измерения CRect
равными объединению двух исходных прямоугольников.
BOOL UnionRect(LPCRECT lpRect1, LPCRECT lpRect2) throw();
Параметры
lpRect1
Указывает на RECT
или CRect
содержит исходный прямоугольник.
lpRect2
Указывает на RECT
или CRect
содержит исходный прямоугольник.
Возвращаемое значение
Ненулевое значение, если объединение не пусто; Значение 0, если объединение пусто.
Замечания
Объединение — это самый маленький прямоугольник, содержащий оба исходных прямоугольника.
Windows игнорирует размеры пустого прямоугольника; То есть прямоугольник, который не имеет высоты или не имеет ширины.
Примечание.
Оба прямоугольника должны быть нормализованы или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect
нормализацию прямоугольников.
Пример
CRect rect1(100, 0, 200, 300);
CRect rect2(0, 100, 300, 200);
CRect rect3;
rect3.UnionRect(&rect1, &rect2);
CRect rectResult(0, 0, 300, 300);
ASSERT(rectResult == rect3);
CRect::Width
Вычисляет ширину CRect
, вычитая левое значение из правого значения.
int Width() const throw();
Возвращаемое значение
Ширина CRect
.
Замечания
Ширина может быть отрицательной.
Примечание.
Прямоугольник должен быть нормализован или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect
нормализацию прямоугольника.
Пример
CRect rect(20, 30, 80, 70);
int nWid = rect.Width();
// nWid is now 60
ASSERT(nWid == 60);