Страница 137 из 238
CRect
Класс
CRect во многом аналогичен структуре
RECT, определенной в операционной системе Windows. Класс
CRect включает в себя функции для работы с объектами данного класса и структуры
RECT. Объекты класса
CRect могут использоваться в аргументах функций вместо объектов структуры
RECT, а также вместо указателей
LPCRECT или
LPRECT. Данный класс является производным от структуры
tagRECT (имя
tagRECT является менее распространенным именем для структуры
RECT). Это означает, что переменные
left,
top,
right и
bottom структуры
RECT являются доступными членами класса
CRect. Объект класса
CRect содержит переменные для задания левого верхнего и правого нижнего углов прямоугольника. При создании объекта класса
CRect необходимо убедиться в том, что задаваемые координаты прямоугольника нормализованы, то есть координата
left меньше координаты
right, а координата
top меньше координаты
bottom. Например, координаты левого верхнего угла (10,10) и координаты правого нижнего угла (20,20) задают нормализованный прямоугольник, а координаты левого верхнего угла (20,20) и координаты правого нижнего угла (10,10) задают ненормализованный прямоугольник. Если прямоугольник не нормализован, то многие функции класса
CRect могут возвращать неправильные результаты. Список этих функций приведен при описании функции
NormalizeRect. Перед вызовом данных функций необходимо вызвать функцию
NormalizeRect, нормализующую объект своего класса. При использовании объектов класса
CRect в функциях
CDC::DPtoLP и
CDC::LPtoDP следует соблюдать осторожность. Если используемый режим отображения предполагает использование отрицательных вертикальных координат, как это имеет место в режиме отображения
MM_LOENGLISH, то функция
CDC::DPtoLP преобразует объект класса
CRect таким образом, что его координата
top будет иметь большее значение, чем координата
bottom. Это приведет к тому, что функции
Height и
Size будут возвращать отрицательные значения высоты преобразованного объект класса
CRect и данный прямоугольник станет ненормализованным. При перегрузке операторов класса
CRect первым операндом должен быть объект класса
CRect, а вторым - объект структуры
RECT или объект класса
CRect. Описание данного класса содержится в файле заголовка afxwin.h.