Новые книги

Изучив эту книгу, вы научитесь делать великолепные презентации, с помощью которых можно донести свои мысли и идеи до любой аудитории – совета директоров, команды проекта, слушателей семинара. Вы поймете, как и когда следует использовать PowerPoint, как готовить презентацию, выбрать дизайн слайдов, расставлять акценты и располагать картинки, схемы и графики и самое главное – как не перегрузить презентацию лишней информацией.

Книга предназначена для широкого круга читателей.
Фундаментальный учебник по основам объектно-ориентированного программирования и инженерии программ. В книге подробно излагаются основные понятия объектной технологии – классы, объекты, управление памятью, типизация, наследование, универсализация. Большое внимание уделяется проектированию по контракту и обработке исключений, как механизмам, обеспечивающим корректность и устойчивость программных систем.

В книге Бертрана Мейера рассматриваются основы объектно-ориентированного программирования. Изложение начинается с рассмотрения критериев качества программных систем и обоснования того, как объектная технология разработки может обеспечить требуемое качество. Основные понятия объектной технологии и соответствующая нотация появляются как результат тщательного анализа и обсуждений. Подробно рассматривается понятие класса - центральное понятие объектной технологии. Рассматривается абстрактный тип данных, лежащий в основе класса, совмещение классом роли типа данных и модуля и другие аспекты построения класса. Столь же подробно рассматриваются объекты и проблемы управления памятью. Большая часть книги уделена отношениям между классами – наследованию, универсализации и их роли в построении программных систем. Важную часть книги составляет введение понятия контракта, описание технологии проектирования по контракту, как механизма, обеспечивающего корректность создаваемых программ. Не обойдены вниманием и другие важные темы объектного программирования – скрытие информации, статическая типизация, динамическое связывание и обработка исключений. Глубина охвата рассматриваемых тем делает книгу Бертрана Мейера незаменимой для понимания основ объектного программирования.

Режимы отображения

Режимы отображения

Подавляющее большинство функций, работающих с оконными координатами, определяют координаты относительно начала рабочей области окна, т.е. от левого верхнего угла.

Таким образом, даже при перемещии окна координаты объектов внутри окна остаются неизменными. При этом единицы, в которых измеряются координаты, зависят от режима отображения (mapping mode), установленного для данного окна. Единицы измерения, зависящие от режима отображения, называют логическими единицами координатами.

При выводе информации на конкретное устройство единицы логических координат преобразуются в физические единицы, которыми являются пиксели.

Идентификаторы, применяемые для обозначения режимов отображения

Идентификатор Значение Эффект
MM_TEXT 1 Логическая единица равна пикселю, начало координат - левый верхний угол окна, положительное значение x - вправо, положительное значение y - вниз (обычный отсчет)
MM_LOMETRIC 2 Логическая единица равна 0.1 мм, отсчет координат - обычный
MM_HIMETRIC 3 Логическая единица равна 0,01 мм, отсчет координат - обычный
MM_LOENGLISH 4 Логическая единица равна 0,1 дюйма, отсчет координат - обычный
MM_HIENGLISH 5 Логическая единица равна 0,001 дюйма, отсчет координат - обычный
MM_TWIPS 6 Логическая единица равна 1/12 точки на принтере (~1/1440 дюйма - "твип"), отсчет координат - обычный
MM_ISOTROPIC 7 Логические единицы и направление осей определяются программистом с помощью функций SetWindowExtEx() и SetViewportExtEx(), единицы по осям имеют одинаковый размер
MM_ANISOTROPIC 8 Логические единицы и направления осей определяются так же, как и для MM_ISOTROPIC, но размеры единиц по осям различны
MM_MIN   MM_TEXT
MM_MAX   MM_ANISOTROPIC
MM_MAX_FIXEDSCALE   MM_TWIPS

Для установки текущего режима отображения используется функция SetMappingMode(), которая в файле wingdi.h описана следующим образом:

  WINGDIAPI int  WINAPI SetMapMode(HDC, inc)
Первый аргумент этой функции - хэндл контекста устройства, для которого устанавливается данный режим. Второй аргумент определяет задаваемый режим отображения. В том же файле wingdi.h можно найти и идентификаторы, использующиеся для обозначения режимов отображения(см. табл.). Надеюсь, что после того, как была просмотрена таблица, вопросов у читателя не возникло. Теперь ясно, что иногда для решения конкретных задач (например, построения графиков) можно использовать различные режимы отображения. При создании окна по умолчанию устанавливается режим MM_TEXT, т.е. все координаты исчисляются в пикселах.