Рассмотрим различные системы координат, которые Windows использует для дисплея. Кроме системы, связанной с рабочей областью окна, Windows использует две другие системы для устройств отображения. Во всех системах координат устройств отображения координаты представляются в пикселах. Ось x системы координат направлена вправо, y – вниз.
Когда мы используем весь экран дисплея, мы работаем в т.н. «экранных координатах». При этом начало координат находится в верхнем левом углу экрана. Экранные координаты используются в сообщении WM_MOVE, а также в следующих функциях: CreateWindow, MoveWindow, GetCursorPos, SetCursorPos, GetWindowRect, WindowFromPoint. Если используется функция CreateDC для получения контекста устройства всего экрана дисплея, то при использовании GDI функций логические координаты переводятся Windows в экранные координаты.
Остальные две системы координат связаны не со всем экраном дисплея, а с конкретным окном.
Вторая система координат называется «оконная система координат». Ее начало координат находится в левом верхнем углу рамки окна. Данная система координат описывает все окно, включая меню, полосы просмотра и заголовок. Для использования оконной системы координат надо получать контекст устройства, вызывая функцию GetWindowDC. При этом GDI функции, использующие данный контекст, преобразуют логические координаты в экранные.
И наконец, третья система координат связана с рабочей областью окна. Начало координат данной системы находится в левом верхнем углу рабочей области окна. Когда вы получаете контекст устройства при помощи функций GetDC и BeginPaint, то логические координаты, используемые функциями GDI, транслируются Windows в координаты рабочей области окна.
Первый атрибут контекста устройства называется «режим отображения» и определяет, как логические координаты используемые GDI функциями, преобразуются в физические координаты устройства отображения. При этом система координат устройства отображения может быть экранной, оконной или системой координат рабочей области окна.
Физические координаты устройства отображения имеют в качестве единицы измерения пиксел, а логическая система координат может использовать как единицу измерения и пикселы, и миллиметры, и дюймы.