Библиотека TURBO VISION
ВВЕДЕНИЕ
Если Вы пишете программы, работающие в текстовом режиме, которые используют высокопроизводительный, гибкий и целостный интерфейс для взаимодействия с пользователем, то библиотека Turbo Vision предназначена для Вас. 
Библиотека Turbo Vision является средством для разработки программ, работающих в среде DOS, реализующих новый взгляд на проектирование программного обеспечения. Библиотека может быть использована для создания многофункционального интерфейса взаимодействия, включающего окна, диалоговые панели, меню, поддержку манипулятора "мышь" и даже простой, настраиваемый, удобный редактор. 
После создания фирмой Borland нескольких программ с целостным многофункциональным пользовательским интерфейсом, была предпринята попытка заключить их возможности в многократно используемый набор средств. Библиотека Turbo Vision была разработана с использованием технологии объектно-ориентированного программирования. 
Turbo Vision является полной объектно-ориентированной библиотекой классов, которая содержит компоненты пользовательского интерфейса: многочисленные, сворачивающиеся, перекрывающиеся окна; - поддержку "мыши"; - панели диалога; - встроенную установку цвета; - кнопки, полосы прокрутки, панели ввода, кнопки управления с независимой и зависимой фиксацией; - стандартную обработку нажатий клавиш и работы манипулятором "мышь"; - и многое другое! 
Чтобы использовать Turbo Vision, нужно свободно владеть объектно-ориентированным программированием (ООП) и, в частности, С++. В приложениях, написанных с использованием TurboVision, широко используется техника ООП, в том числе наследование и полиморфизм. 
ОСНОВНЫЕ ЭЛЕМЕНТЫ TURBO VISION. 
Библиотека Turbo Vision представляет собой многооконную оболочку, управляемую событиями. Она является программным средством, содержащим только скелет программы (средства, обеспечивающие основную структуру) . С помощью свойства расширяемости объектно-ориентированного программирования на языке Turbo С++, можно наполнить этот скелет. Turbo Vision представляет Вам класс прикладной программы, TApplication, а Вы на его основе создайте собственный класс, например, - MyApplication, для поддержки своей собственной прикладной программы. Затем Вы добавляете к нему, или заменяете в нем необходимые детали, требующиеся для решения конкретной задачи. 
Подразумеваемые конструкторы и деструкторы берут на себя все функции обслуживания: инициализацию объектов и их уничтожение. 
При использовании Turbo Vision Вам никогда не придется модифицировать имеющийся исходный текст. Изменения в Turbo Vision производятся путем расширения. Класс прикладной программы TApplication остается неизменяемым внутри библиотеки TV. LIB. Вы будете делать только добавления к нему, создавая новые типы классов и вносить нужные изменения путем замены имеющихся функций на новые, которые Вы разработаете для новых объектов. 
Кроме того, Turbo Vision представляет собой иерархическую структуру, а не разобщенный набор отдельных средств. Его можно использовать только целиком, а не по частям. Все компоненты Turbo Vision архитектурно взаимосвязаны и все они взаимодействуют друг с другом множеством взаимосвязанными способами. Не стоит пытаться вычленить из него, например, поддержку "мыши" - это сложнее, чем создание новой системы поддержки "мыши". 
В основе философии разработки Turbo Vision лежат две следующие рекомендации: полное использование объектно-ориентированного техники и работа с комплексом библиотеки Turbo Vision в ее основных понятиях. Это означает "игру по правилам" Turbo Vision и использование ее составных типов объектов так, как это в ней предусмотрено. Turbo Vision создавался для избавления пользователей от огромного объема ненужной повторяющейся работы и предоставления проверенной основы для разработки прикладных программ, которой можно доверять. Элементы прикладной программы, построенной в Turbo Vision. 
Прикладная программа, использующая Turbo Vision, представляет собой взаимодействующее множество отображаемых объектов, событий и неотображаемых объектов. 
В контексте Turbo Vision отображаемый объект - это то, что Вы можете увидеть на экране. Поля, рамки, строки прокрутки и меню, - все это отображаемые объекты. Отображаемые объекты могут объединяться и образовывать более сложные объекты, такие как окна и панели диалога. Такие отображаемые объекты называются групповыми объектами, и функционируют вместе, как единый отображаемый объект. Группы даже могут содержать в себе другие группы, порождая цепочки отображаемых объектов и подобъектов. 
Событием является то, на что должна реагировать Ваша программа. События поступают от клавиатуры, от "мыши" или из других частей Turbo Vision. События помещаются в очередь, затем обрабатываются в порядке поступления обработчиком. Такой обработчик имеется в классе TApplication, являющимся телом Вашей прикладной программы. 
Неотображаемыми называются любые объекты программы, не являющиеся отображаемыми, т.е. непосредственно не взаимодействующие с экраном. Они выполняют вычисления, осуществляют связь с периферийными устройствами и в целом реализуют функции прикладной программы. Если неотображаемому объекту нужно вывести какую-либо информацию на экран, то это делается с помощью отображаемого объекта. Эта концепция является очень важной для поддержания строгого порядка в прикладных программах Turbo Vision: с экраном взаимодействуют только отображаемые объекты. 
Общие подходы
Поскольку Turbo Vision разработан для реализации стандартизированного, рационального подхода к построению интерфейса, то Ваши прикладные программы обретут похожий вид. 
Этот вид идентичен виду интерфейса различных интегрированных сред фирмы Borland и базируется на многолетнем опыте и проверках их использования. Наличие общего и доступного для понимания подхода к интерфейсу прикладной программы является большим преимуществом для Вас и Ваших пользователей: несмотря на любую сложность и "закрытость" задач Вашей программы, способ работы с ней будет всегда Вам знаком и процесс работы с ней легок и прост. 
Рабочая область - это заштрихованный фон, на котором отображаются объекты прикладной программы. Как и все элементы Turbo Vision, рабочая область является объектом. Объектами являются также линейное меню в верхней части экрана и строка состояния в нижней части. Команды в строковом меню соответствуют меню, которые "раскрываются" вниз (вертикальные меню) с помощью "мыши" или нажатием соответствующих управляющих клавиш. 
Связь программы с пользователями обычно осуществляется через окно или несколько окон или панели диалога, которые отображаются в рабочей области на экране и исчезают в соответствии с командами от "мыши" или с клавиатуры. Turbo Vision располагает большим ассортиментом алгоритмов работы с окнами по вводу и отображению информации на экране. Внутренние поля можно сделать прокручиваемыми, и тогда они будут служить "воротами" в более крупные изображения данных, такие как файлы документов. Прокрутка окна по данным осуществляется перемещением бегунка строки-прокрутки в нижней части экрана, в его правой части или в обеих этих частях. Бегунок строки прокрутки указывает положение окна относительно совокупности изображаемых на экране данных. 
Диалоговые окна часто содержат кнопки, которые реализованы как выделенные цветом слова, которые выбирают с помощью "мыши" (или с помощью клавиш "табуляция" и "пробел") . В ответ на нажатие, "кнопки" вдавливаются (как настоящие кнопки) и могут реализовывать передачу команд прикладной программе. 
При изучении Turbo Vision следует иметь в виду: суть программирования с использованием Turbo Vision заключается в разработке требуемого вида интерфейса и его обработки команд. Turbo Vision "скелет" программы позаботится о передаче команд нужным частям Вашей программы. Вам же останется лишь определить, что конкретно должно быть сделано после нажатия клавиши на клавиатуре, кнопки "мыши" или выбора команды меню. Таким образом "мясом" Вашей программы является та ее часть, которая выполняет функциональную обработку принимаемых от пользователей команд - и эта "мясная" часть содержится в создаваемых отображаемых объектах. 
Структура программы
Каким же образом реализуется выполнение программы? Как правило, большая часть программы унаследуется из определенных ранее объектов в Turbo Vision. Причем унаследуется настолько значительная часть программы, что принципы ее реализации могут показаться таинственными. Пошаговое выполнение программы с помощью интегрированного отладчика не даст полной картины, т.к. Turbo Vision функционирует в виде оттранслированной библиотеки. 
Т. к. программы, написанные с использованием Turbo Vision, управляются событиями, их структура несколько отличается от обычных программ. Особенностью программ, управляемых событиями, является отделение структур управления, которые выполняют чтение и обработку входных данных, от процедур и функций, которые воздействуют на эти входные данные. 
Обычные программы, как правило, содержат много отдельных программных блоков, каждый из которых предусматривает получение входных данных, затем определяет, какой части программы они адресованы и выполняют вызов соответствующего фрагмента для обработки этих данных, а затем повторяет все эти операции. Кроме того, фрагмент, завершающий обработку входных данных, должен получить информацию о месте передачи управления для следующего этапа ввода. 
Программы, управляемые событиями, наоборот, имеют централизованный механизм диспетчеризации событий. Таким образом, большая часть программы не заботится о выборке входных данных и, поэтому, их использование не будет составлять большой проблемы. Это имеет большое значение для отладки программ, т.к. Вы должны изменить всю стратегию отладки, устанавливая контрольные точки в функциях обработки событий для проверки диспетчеризации сообщений; в фрагментах программы, реагирующих на происходящие события, чтобы проверить правильность их функционирования. 
Деструктор прикладной программы
Когда программа завершается, отображаемые объекты уничтожаются путем автоматических вызовов деструкторов базовых классов в порядке, обратном тому, который использовался при вызове конструкторов. Наконец, отключается обработчик ошибок и драйверы Turbo Vision. В целом, от Вас не требуется специального завершения работы с объектами Turbo Vision.