Четвертый Borland C++ и его окружение

         

Элементы данных


Pic Указывает на строку шаблона, задающую формат

данных в соответствующем редактируемом управляющем элементе.



Элементы данных


Max Максимально допустимое для редактируемого управляющего элемента значение.
Min Минимально допустимое значение.



Элементы данных


enum TEllipse Определяет константу Ellipse, используемую тото, чтобы отличить конструктор эллипса от

конструктора копирования прямоугольника.



Элементы данных


Dispatcher Абстрактный тип диспетчера, указывающий на одну из функций диспетчера.
Id Содержит ресурс меню или оперативной клавиши

для функции реакции на сообщения.

Msg Содержит идентификатор сообщения.
NotifyCode Содержит код уведомления для записи таблицы

реакции (код кнопки, комбинированного элемента, редактируемого управляющего элемента или блока списка).

Pmf Указывает на обработчик сообщения или функцию-элемент.
T Тип общей функции-элемента, отвечающей на уведомляющие сообщения.



Элементы данных


LineMagnitude Это число единиц диапазона для прокрутки на

небольшую величину при щелчке "мышью" на

стрелке полосы прокрутки.

PageMagnitude Число единиц диапазона для прокрутки полосы

при большом перемещении (щелчок "мышью" на областях полосы прокрутки).



Элементы данных


HighValue Содержит максимальное значение позиции скользящего маркера полосы прокрутки.
LowValue Содержит минимальное значение позиции скользящего маркера полосы прокрутки.
Position Содержит позицию скользящего маркера.



Элементы данных


AutoMode В случае значения True активизируется автоматическая прокрутка.
AutoOrg В случае True прокрутка смещается относительно

начала.

HasHScrollBar В случае значения True элемент прокрутки имеет

горизонтальную прокрутку.

HasVScrollBar В случае значения True элемент прокрутки имеет

вертикальную прокрутку.

TrackMode Имеет значение True при активизации слежения.
Window Указывает на окно, с клиентной областью которого должен работать элемент прокрутки.
XLine, YLine Задает число логических единиц устройства на

строку для прокрутки прямоугольника в горизонтальном и вертикальном направлениях.

XPage, YPage Задает число логических единиц устройства на

страницу для прокрутки прямоугольника в горизонтальном и вертикальном направлениях.

XPos,YPos Задает текущую позицию прямоугольника в горизонтальных и вертикальных единицах прокрутки?.
XRange,YRange Задает число горизонтальных и вертикальных

единиц прокрутки.

XUnit,YUnit Задает величину прокрутки прямоугольника в горизонтальном и вертикальном направлениях.



Элементы данных


BkColor Значение фонового цвета скользящего маркера.
CaretRect Позиция прямоугольника активного окна.
Max Максимальное значение позиции скользящего маркера.
Min Минимальное значение позиции скользящего маркера.
MouseOffset Используется при перемещении "мыши" вниз и

движении маркера.

Pos Указывает, где позиционирован скользящий маркер.
Range Содержит разницу между максимальным и минимальным диапазоном скользящего маркера.
SlideDC Используется при перемещении "мыши" вниз и

движении маркера.

Sliding Имеет значение True при перемещении маркера.
SlotThick Указывает толщину области перемещения маркера.
Snap True, если действует ограничение позиции.
ThumbRect Содержит ограничивающий прямоугольник скользящего маркера.
ThumbResId Битовый массив для скользящего маркера.
ThumbRgn Ссылка на область, которая определяет форму

скользящего маркера.

TicGap Задает интервал между рисками в элементах изображения.



Элементы данных


TextLen Содержит размер текстового буфера для статических управляющих элементов.



Элементы данных


operator= Устанавливает код состояния и отбрасывает

исключительную ситуацию TXCompatibility.

operator Возвращает код состояния.



Элементы данных


TModeIndicator enum Перечисляет программные режимы. По умолчанию

они упорядочиваются в строке состояния горизонтально слева направо.

BorserStyle Один из перечислимых стилей обрамления индикаторов режима в строке состояния.
ModeIndicators Это битовое поле указывает, какие индикаторы

режима создаются в строке состояния.

NumModeIndicators Задает число индикаторов режима (от 1 до 5).
Spacing Задает интервал между индикаторами в строке

состояния.



Элементы данных


OpenMode Содержит флаги режимов, используемых при открытии потоков документов.
StreamName Содержит имя потока, использованного для открытия документов.
Doc Содержит документ, являющийся владельцем потока.
NextStream Указывает на следующий поток в списке открытых

потоков.



Элементы данных


Strings Указывает на набор строк, содержащих все допустимые строки (если задается NULL, то разрешаются все строки).



Элементы данных


TAlign Перечисляет атрибуты выравнивания текста.
Align Атрибут выравнивания текста.
NumChars Содержит число символов текста.
TextLen Содержит длину текста.



Элементы данных


Border Тонкая рамка для разделителей.
CaptionHeight Высота строки заголовка.
CaptionFont Шрифт, используемый для текста в тонкой строке

заголовка.

CloseBox В случае значения True окно будет закрываться

при щелчке "мышью" на блоке закрытия.

DownHit Адрес точки нажатия кнопки "мыши" или перемещения курсора.
Frame Фактические размеры строки заголовка.
isPressed Имеет значение True при нажатии кнопки "мыши".
TCEnabled Равно True, если выводится тонкая строка заголовка.
WaitingForSysCmd Равно True, если TTinyCaption может принять

системные сообщения.



Элементы данных


NumColumns Содержит число столбцов в полосе инструментальных средств.
NumRows Число строк.



Элементы данных


Options Битовый массив, используемый для управления

параметрами производных классов. По умолчанию

все биты нулевые.



Элементы данных


Property enum Значения характеристик, определенные для TView

и доступные в производных классах.

Tag Содержит указатель на определяемые приложением

данные.

Doc Содержит текущий документ.
NotOK Устанавливает отображаемый элемент в недопустимое состояние (IsOK будет возвращать 0).



Элементы данных


Attr Содержит структуру TWindowAttr с атрибутами

создания окна (стиль окна, расширенный стиль,

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

клавиш меню).

DefaultProc Содержит адрес используемой по умолчанию оконной процедуры, которая вызывается для обработки сообщений Window, не обрабатываемых приложением.
HWindow Содержит описатель соответствующего окна Windows.
Parent Указывает на интерфейсный объект, который используется в качестве родительского окна.
Scroller Указывает на интерфейсный объект - элемент

прокрутки окна.

Status Сигнализирует об ошибке при инициализации интерфейсного объекта.
Title Указывает на заголовок окна.
CursorInstance Содержит идентификатор библиотеки для заданного курсора.
CursorResId Содержит идентификатор ресурса курсора для заданного курсора.
hAccel Содержит описатель текущей таблицы акселераторов Windows.
hCursor Содержит описатель курсора окна.
TransferBuffer Указывает на буфер передачи данных в TWindow и

из него.



Элементы данных


Window Указывает на объект окна, связанный с данной

исключительной ситуацией.



Элементы данных


AccelTable Содержит идентификатор ресурса для таблицы акселераторов окна.
ExStyle Содержит расширенные значения стиля окна.
Id Содержит идентификатор дочернего окна или

идентификатор ресурса для управляющего элемента диалогового окна.

Menu Содержит идентификатор ресурса, представляющий

собой имя меню окна.

Param Содержит значение, передаваемое окну при его

создании.

Style Содержит значения, определяющие стиль, форму и

размер окна.

X,Y,W,H Содержат координаты верхнего левого угла окна,

а также его ширину и высоту.



Элементы данных


Wnd Содержит описатель окна, владельцем которого

является данный DC.



Элементы изображения и палитры


Графический экран представляет собой массив элементов изображения. Каждый элемент изображения соответствует одной (цветной)

точке на экране. Значение элемента изображения не задает точный

цвет этой точки напрямую; на самом деле это некоторый индекс таблицы цветов, называемой палитрой. Каждый элемент палитры, соответствующий данному значению элемента изображения, содержит точную информацию о цвете, которым будет отображен этот элемент

изображения.

Такая схема косвенных обращений имеет множество следствий.

Хотя аппаратное обеспечение может позволять отображение множества

цветов, одновременно на экране может находиться только некоторое

их подмножество. Количество одновременно находящихся на экране

цветов равно числу элементов палитры (размеру палитры). Например,

EGA позволяет наличие 64 цветов, но лишь 16 из них может находиться на экране сразу; таким образом, размер палитры EGA равен 16.

Размер палитры определяет диапазон значений, которые может

принимать элемент изображения, от 0 до (размер-1). Функция

getmaxcolor возвращает максимальное допустимое значение элемента

изображения (размер-1) для текущего графического драйвера и режима.

При обсуждении графических функций Borland C++ мы часто используем термин "цвет", например текущий цвет вычерчивания, цвет

заполнения и цвет элемента изображения. Фактически цветом мы

здесь называем значение элемента изображения: это некоторый индекс в палитре. Только палитра реально определяет фактический

цвет на экране. Манипулируя палитрой, вы можете изменять фактические цвета, выводимые на дисплей, даже хотя значения элементов

изображения (цвета вычерчивания, заполнения и т.д.) могут не изменяться.



Элементы классов


Вообще, в классах могут объявляться элементы типа public,

private и protected (общие, приватные, и защищенные - детальные разъяснения смотрите в следующем разделе). Эти элементы могут быть другими объектами из других классов и функциями элементами:

Ключевое слово сlass

Имя класса (как правило, осмысленное)

v v

class shape {

private: // Ключевое слово private

Элемент > int init_flag; // Приватный элемент

данных protected: // Ключевое слово protected

Элементы > double xo, yo; // Защищенные элементы

данных public: // Ключевое слово public

Функции -> void init(double x, double y); // Общие

элементы -> double area(void); // элементы

};

Имя класса shape можно использовать точно так же, как и имя

обычного типа данных в Cи. Например, можно сделать следующее объявле-

ние для массивов:

shape Times[10]; // объявление массива shape из 10 элементов



Этот параметр предназначен для программ,


По умолчанию в Borland C++ устанавливается параметр генерации кода "эмуляция" (параметр компилятора режима командной строки

-f). Этот параметр предназначен для программ, которые могут вообще не иметь операций с плавающей точкой, а также для программ,

которые должны выполняться и на машинах, на которых сопроцессор

80х87 не установлен.

В случае параметра эмуляции компилятор генерирует код, как

если бы сопроцессор присутствовал, но при компоновке подключает

библиотеку эмуляции операций с плавающей точкой (EMU.LIB). При

выполнении такой программы сопроцессор 80х87, если он установлен,

будет использоваться. Если же во время выполнения процессора не

окажется, то программа будет использовать специальное программное

обеспечение, эмулирующее процессор 80х87.


Этапы инсталляции


Программа инсталляции Borland С++ устанавливает сам продукт

С++ (IDE, инструментальные средства режима командной строки, ObjectWindows, Turbo Debugger), а также Win32s (что позволяет выполнять 32-разрядные программы в 16-разрядной Windows). Программа

инсталляции работает под Windows, Win32s и Windows NT (однако под

Windows NT работают не все программы).

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

инсталлировать Borland С++ с дискет, сделайте следующее:

Вставьте диск 1 в дисковод A или B.

Запустите Windows и выберите в администраторе программ команду File Run.

Наберите a:\install или b:\install и нажмите Enter. Выводится диалоговое окно инсталляции. В нижней части этого окна вы увидите объем необходимого для полной установки

пространства на диске (Target Requirements), а также объем

доступного пространства на диске. Если используется компрессия диска, прочитайте файл INSTALL.TXT (возможно, вам

потребуется больше места).

Если вы хотите установить конкретные файлы, щелкните

"мышью" на кнопке Customize BC4.0 Installation. Выведется

другое диалоговое окно с описаниями и командными кнопками

для установки компонентов продукта. Щелкните "мышью" на

том компоненте, который хотите установить. Выводится дополнительное диалоговое окно, в котором вы можете отметить

файлы, не требующие установки. Щелкните на OK и повторите

этот процесс для всех необходимых компонентов. Щелчок

"мышью" на OK возвратит вас в первое окно установки.

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

вы хотите использовать другие каталоги, наберите другой

маршрут. Основным каталогом, в котором устанавливается

Borland С++, является C:\BC4, а рабочим - C:\BC4\BIN.

По умолчанию программа установки создает группу Windows, в

которую помещаются все пиктограммы Borland C++. Если вы не

хотите создавать группу, отмените Create Borland C++ Group.




По умолчанию инсталлируется также Win32s. Если это не требуется, отмените данный параметр. Win32s необходима для

работы 32-разрядных приложений.

Если вы инсталлируете продукт на машине с локальной сетью

LAN Windows, то выберите LAN Windows Configuration (в других случаях эту возможность выбирать не нужно).

Чтобы начать копирование файлов, щелкните "мышью" на кнопке Install. После завершения инсталляции прочитайте файл

README.TXT. Он описывает последние изменения в продукте,

перечисляет документацию и оперативные справочные файлы.

После установки убедитесь, что в CONFIG.SYS FILES и BUFFERS

установлены в значение 40 или больше. При установке в системные

файлы вашего компьютера вносятся следующие изменения:

AUTOEXEC.BAT включает в себя маршрут Borland С++ (по умолчанию C:\BC4\BIN).

В WIN.INI включается секция [BCW4.0 INSTALL], которая используется программой установки TASM для поиска установленного Borland С++. Кроме того, в секции [EXTENSION] расширение IDE связывается с BCW.EXE.

В SYSTEM.INI включаются две строки:

device = c:\bc4\bin\tddebug.386

device = c:\bc4\bin\windpmi.386

Если вы работаете под Windows NT, в файл CONFIG.NT добавляется NTCMDPROMPT.

Поставляемые с Borland С++ файлы перечислены в файле FILE-

LIST.TXT.


Как работает утилита MAKE


Утилита MAKE создает самую последнюю версию вашей программы,

выполняя при этом следующие задачи:

Считывает специальный файл (называемый файлом описания,

формирующим файлом или файлом сборки), который был предварительно вами создан. Этот файл указывает утилите MAKE,

какие объектные файлы и библиотечные файлы должны быть

скомпонованы для того, чтобы создать выполняемый файл, а

также указывает, какие исходные файлы и файлы заголовков

должны компилироваться для создания каждого объектного

файла.

Проверяет время и дату создания каждого объектного файла

по отношению к времени и дате создания исходного файла и

файлов заголовков, от которых он зависит. Если какой-либо

из этих файлов является более новым, чем объектный файл,

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

Вызывает компилятор для перекомпиляции исходного файла.

После того, как были проверены все зависимости объектных

файлов, дата и время создания каждого объектного файла

проверяется по отношению к дате и времени создания выполняемого файла.

Если какой-либо из объектных файлов оказывается более новым по сравнению с выполняемым файлом, утилита вызывает

компоновщик для его перекомпоновки.

Утилита MAKE полностью полагается на дату и время, которые

DOS присваивает каждому файлу. Это означает, что для нормальной

работы утилиты MAKE необходимо корректно устанавливать системные

дату и время.


Ниже приводится синтаксис вызова команды MAKE:

MAKE [параметр...][результат...]

Здесь "параметр" является параметром утилиты MAKE (они описываются далее), а "результат" представляет собой имя результирующего файла, который должен быть создан.

Ниже описываются синтаксические правила вызова утилиты MAKE:

За словом make должен следовать пробел, а затем список параметров утилиты make.

Каждый параметр утилиты MAKE должен отделяться от соседних

параметров пробелом. Параметры могут располагаться в любой

последовательности; может быть введено произвольное число




этих параметров (ограничением является длина командной

строки). Все параметры, которые не задают строку (например, -s или -a) могут завершаться необязательным символом - или +. При помощи этих символов указывается выключение

(-) или включение (+) данного параметра.

За списком параметров утилиты MAKE следует пробел, а затем

необязательный список результирующих файлов.

Каждый результирующий файл также должен отделяться от соседних результирующих файлов пробелом. Утилита MAKE анализирует результирующие файлы в порядке их расположения, перекомпилируя по мере необходимости их компоненты.

Если в командной строке не содержатся имена результирующих

файлов, то утилита MAKE использует в качестве явно заданного результирующего файла имя первого обнаруженного результирующего

файла. Если в командной строке указан один или несколько результирующих файлов, то они будут создаваться по мере необходимости.


Каталог EXAMPLES


Каталог EXAMPLES\CLASSLIB\BIDS содержит несколько примеров

программ, использующих контейнерные классы:

Программа Описание

STRNGMAX Пример программы работы со строками.
REVERSE Промежуточные пример, использующий TStack (псевдоним TStackAsVector) и String. Этот пример позволяет пользователю вводить строки, а затем выводить их в обратном порядке.
LOOKUP Промежуточный пример, использующий TDictionary-AHashTable и TDDAssociation.
QUEUETST Промежуточный пример, использующий TQueue (псевдоним TQueueAsVector) и неирархический класс TTime.
DIRECTRY Продвинутый пример, иллюстрирующий производные пользовательские классы, использующие TISArrayAsVector и исходные файлы FILEDATA.CPP и TESTDIR.CPP.

Для отладки контейнеров Borland предусматривает специальные библиотеки.



Каталог SOURCE


Каталог SOURCE\CLASSLIB содержит исходные файлы, реализующие

многие функции-элементы библиотечных классов. Эти исходные файлы

могут вам потребоваться при построении библиотеки.



Каталоги контейнеров


Библиотеки для классов контейнеров, построенных на базе шаблонов, отличаются по префиксу BIDS: это BIDSx.LIB, где x представляет модель памяти, и BIDSDBx.LIB для диагностических версий.

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

Имя файла Описание

BIDSF.LIB 32-битовая (плоская модель).
BIDSDF.LIB 32-битовая (плоская модель), диагн. версия.
BIDS40F.DLL 32-битовая DLL (плоская модель).
BIDS40DF.DLL 32-битовая DLL (плоская модель), диагностическая версия.
BIDSFI.LIB 32-битовая библиотека импорта (плоская модель).
BIDSDFI.LIB 32-битовая библиотека импорта (плоская модель), диагностическая версия.
BIDSS.LIB 16-битовая малая модель.
BIDSDBS.LIB 16-битовая малая модель, диагностическая версия.
BIDSC.LIB 16-битовая, компактная модель.
BIDSDCC.LIB 16-битовая, компактная модель, диагностическая версия.
BIDSL.LIB 16-битовая, большая модель.
BIDSDBL.LIB 16-битовая, большая модель, диагностическая версия.
BIDS40.DLL 16-битовая DLL.
BIDS40D.DLL 16-битовая DLL, диагностическая версия.
BIDSI.LIB 16-битовая библиотека импорта.
BIDSI.LIB 16-битовая библиотека импорта, диагностическая версия.



Класс Application::TXInvalidMainWindow (applicat.h)


Вложенный класс TXInvalidMainWindow описывает исключительную

ситуацию, вызываемую недопустимым окном. Эта ситуация возникает

при нехватки памяти для создания окна или объекта диалога. InitInstance дает эту ситуацию при невозможности инициализировать

объект приложения.



Класс Bad_cast (typeinfo.h)


Если при приведении типа ссылки dynamic_cast завершается неуспешно, то выражение генерирует особую ситуацию Bad_cast (в случае указателя генерируется нулевой указатель).



Класс Bad_typeid (typeinfo.h)


Когда операнд typeid разыменовывается в нулевой указатель,

то операция typeid может генерировать Bad_typeid.



Класс bcd (bcd.h)


Конструкторы этого класса создают двоично-кодированные десятичные числа (BCD), от целых до чисел с плавающей точкой. С помощью описанной ниже функции real можно конвертировать числа bcd в long double.

После построения чисел bcd их можно использовать в выражения

совместно с другими типами и применять в стандартных математических функциях. Такие математические функции как abs, cos или sqrt для операций с bcd переопределяются. Переопределяются также операции +, -, *= , == и т.д. Числа bcd могут иметь точность до 17

разрядов и диапазон от 1*10^-125 до 1*10^125.



Класс BitmapGadget (bitmapga.h)


Этот производный из TGadget класс представляет собой простой

реквизит который может выводить одновременно массив растровых

изображений.



Класс BitSet (bitset.h)


BitSet устанавливает или сбрасывает бит или битовую группу.

Этот класс можно использовать для установки и очистки флагов параметров и получения информации о состоянии бит.



Класс Box3d


Ниже показано как можно произвести класс box3d из shape:

class box3d : public rect {

public:

double depth; // Добавлена глубина

// Конструктор для создания трехмерного прямоугольного объекта

box3d(double x, double y, double w, double h, double d);

double area(void); // Подмена area() в классе rect

double vol(void); // Дополнение функцией вычисления объема

};



Класс Circle


Ниже показано как нужно произвести класс circle из shape:

class circle : public shape {

public:

double radius; // Дополнительные данные: радиус круга

// конструктор circle

circle(double x, double y, double r);

double area(void); // Подменяет в классе shape функцию area()

};



Класс complex (comnplex.h)


Создает комплексные числа. Вы можете свободно использовать

эти числа в выражениях совместно с числами int, double и другими

числовыми типами, а также стандартными математическими функциями Си.

Класс complex переопределяет операции +, -, *, /, +=, -=,

*=, /=, == и !=. Для потокового ввода-вывода переопределяются

операции >> и <<.



Класс conbuf (constrea.h)


Специализирует streambuf для обработки консольного вывода.



Класс constream (constrea.h)


Обеспечивает потоки вывода на консоль. Этот класс является

производным от ostream и доступен только для приложений консольного режима.



Класс CreatedDC (dc.h)


Этот абстрактный класс TDC служит базовым классом для создаваемых или удаляемых объектов DC (контекст устройства). Он выполняет основную работу по созданию и удалению HDC с помощью CreateDC и DeleteDC.



Класс Cylinder


Ниже показано как можно произвести класс cylinder из circle:

class cylinder : public circle {

public:

double ht; // Дополнительные данные: высота цилиндра

// Конструктор для цилиндра

cylinder(double x, double y, double r, double h);

double area(void); // Подмена в классе circle функции area()

double vol(void); // Дополнительная функция вычисления объема

};



Класс filebuf (fstream.h)


Специализирует streambuf для ввода и вывода символов. Управляет выделением и удалением буфера, а также установкой позиции в

файле. Позволяет с помощью соответствующего конструктора или

функции-элемента использовать небуферизованный ввод-вывод. По

умолчанию файлы открываются в режиме openprot и допускают чтение

или запись. Этот класс обеспечивает только базовые средства для

ввода-вывода. Операции ввода-вывода выполняются с помощью функций

streambuf.



Класс фильтрации ввода


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

Объект фильтра проверки допустимости ObjectWindows представляет общий механизм, ограничивающий вид символов, которые пользователь может вводить в данном управляющем элементе редактирования. TFilterValidator - это простой механизм проверки допустимости, проверяющий данные по мере ввода их пользователем. Его конструктор имеет только один параметр - набор допустимых символов.

TFilterValidator переопределяет IsValidInput таким образом,

чтобы она возвращала True, если все символы строки содержатся в

наборе допустимых символов. Редактируемый управляющий элемент

вставляет символы только в том случае, если IsValidInput возвращает True. Производные классы, такие как TRangeValidator, могут

комбинировать фильтрацию ввода с другими видами проверки допустимости строки.



Класс fpbase (objstm.h)


Обеспечивает базовые операции, общие для всех потоков ввода-вывода объектного файла.



Класс fstream (fstream.h)


Этот потоковый класс является производным от fstreambase и

iostream и выполняет с помощью filebuf одновременный ввод и вывод.



Класс fstreamable (fstream.h)


Этот производный от ios класс обеспечивает общие для файловых потоков операции. Он используется в качестве базового для

fstream, ifstream и ofstream.



Класс ifpstream (objstrm.h)


Обеспечивает базовый класс для чтения (извлечения) потоковых

объектов из потоков.



Класс ifstream (fstream.h)


Этот производный от fsreambase потоковый класс обеспечивает

операции ввода через filebuf.