Failed to locate DPMI server (MPMI16BI.OVL)
Failed to locate protected mode loader (DPMILOAD.EXE)
Сообщение об ошибке этапа компиляции
(не найден сервер DPMI)
Убедитесь, что файлы MPMI16BI.OVL находится в каком-либо
указанном в маршруте каталоге, или в том же каталоге, что и командное средство защищенного режима, которое вы пытаетесь использовать.
Failed to locate protected mode loader (DMPILOAD.EXE)
Фатальная ошибка командной строки:
(не найден загрузчик защищенного режима)
Убедитесь, что файл DMPILOAD.EXE находится в каком-либо указанном в маршруте каталоге, или в том же каталоге, что и командное средство защищенного режима, которое вы пытаетесь использовать.
Failed read from имя_файла
Сообщение об ошибке утилиты TLINK
(чтение из файла невозможно)
Компоновщик не может прочитать данный файл.
Failed write from имя_файла
Сообщение об ошибке утилиты TLINK
(запись в файла невозможна)
Компоновщик не может записать данный файл.
__far16 may be used with __pascal or __cdecl
Сообщение об ошибке этапа компиляции
(__far16 может использоваться __pascal или __cdecl)
Для вызовов функций или ссылки на данные в 16-разрядной DLL
вы использовали __far16, но такие функции и данные могут модифицироваться только с помощью __pascal или __cdecl.
File must contain at least one external declaration
Сообщение об ошибке этапа компиляции
(файл должен содержать хотя бы одно объявление external)
Данная единица компиляции было логически пустой и не содержала никаких объявлений. Язык Си стандарта ANSI и С++ требуют,
чтобы в единице компиляции находились какие-нибудь переменные.
File name too long
Сообщение об ошибке этапа компиляции
(слишком длинное имя файла)
Имя файла в директиве #include было слишком длинным для обработки его компилятором. Имена файлов в DOS не могут превышать
79 символов.
File name too long
Сообщение об ошибке этапа компиляции
(имя файла имеет слишком большую длину)
Имя файла, заданное в директиве !include, имеет слишком
большую длину для обработки ее обслуживающей программой МAKE 512 байт (размер внутреннего буфера).
Вы быстро обнаружите, что существуют макрокоманды и правила
утилиты MAKE, которые требуется использовать снова и снова. Существует три способа их обработки:
Во-первых, вы можете заносить их в каждый создаваемый вами
формирующий файл для утилиты MAKE;
Во-вторых, вы можете занести все эти элементы в один файл
и воспользоваться директивой !include в каждом создаваемом
вами формирующем файле утилиты MAKE. (Другие директивы
описываются далее в этой главе.);
В-третьих, вы можете занести все эти элементы в файл
BUILTINS.MAK.
Каждый раз, когда вы запускаете утилиту MAKE, она ищет файл
с именем BUILTINS.MAK. Однако, наличие файла BUILTINS.MAK не является обязательным. Если MAKE обнаруживает файл BUILTINS.MAK, то
сначала она интерпретирует этот файл. Если утилита MAKE не может
обнаружить файл BUILTINS.MAK, то она переходит непосредственно к
интерпретации файла MAKEFILE (или того формирующего файла утилиты
MAKE, который был вами задан с помощью параметра -f).
Утилита MAKE сначала ищет файл BUILTINS.MAK в текущем каталоге. Если он отсутствует, и вы работаете под управлением DOS
версии 3.0 или старше, то MAKE осуществляет поиск в том каталоге,
откуда была вызвана сама утилита MAKE. Вам следует заносить файл
BUILTINS.MAK в тот же каталог, где находится файл MAKE.EXE.
Утилита MAKE всегда осуществляет поиск формирующего файла
только в текущем каталоге. Этот файл содержит правила для конкретной создаваемой выполняемой программы. Как файл BUILTINS.MAK,
так и формирующий файл подчиняются одинаковым синтаксическим правилам.
Поиск файлов, задаваемых с помощью директивы !include, также
осуществляется в текущем каталоге. Если вы используете параметр
-I (файлы включения), то она будет также выполнять поиск в каталоге, заданном с помощью параметра -I.
BUILTINS.MAK содержит стандартные правила и макрокоманды,
которые MAKE применяет перед тем, как MAKE использует формирующий
файл (параметр -r позволяет MAKE игнорировать BUILTINS.MAK).
В данном разделе описываются файлы определения модуля и операторы, которые в них содержатся. Файл определения модуля обеспечивает для TLINK информацию о содержимом приложения Windows и
требованиях к системе:
Имена прикладной программы или библиотеки динамической
компоновки (DLL).
Идентификация типа прикладной программы как программы для
Windows или OS/2.
Перечисление импортируемых и экспортируемых функций.
Описание атрибутов сегментов кода и данных; позволяет вам
задавать атрибуты для дополнительных сегментов кода и данных.
Размеры динамически распределяемой области и стека.
Обеспечивает фиктивный модуль программы.
Заметим, что утилита IMPLIB может использовать файл определения модуля для создания библиотеки импорта. Утилита IMPDEF может создавать файл определения модуля для использования его с
IMPLIB.
Файлы подсказки представляют собой обычные текстовые файлы,
содержащие параметры и/или имена файлов, которые обычно вводятся
после имени программы TLINK в командной строке. Однако, в отличие
от командной строки, файл подсказки может занимать несколько
строк текста. Вы можете разбить длинный список объектных файлов
или файлов библиотек на несколько строк, завершая одну строку
знаком "плюс" (+) и продолжая список на следующей строке. Когда
плюс возникает в конце строки, следуя непосредственно за одним из
параметров TLINK, в котором + используется для включения параметра (например, /ye+), плюс не рассматривается как символ продолжения строки.
Вы можете также начать каждый из четырех компонентов списка
на отдельных строках: объектные файлы, выполняемый файл, файл
карты отображения, библиотечные файлы. В этом случае вы должны
убрать запятую, используемую для разделения компонентов.
Чтобы проиллюстрировать эти возможности, предположим, что вы
пользуетесь следующей командной строкой:
tlink /c mainline wd ln tx,fin,mfin,work\lib\comm
work\lib\suррort
Вместо нее можно использовать файл подсказки, назвав его, например, FINRESP:
/c mainline wd+
ln tx,fin
mfin
worl\lib\comm work\lib\suррort
Теперь команду TLINK следует вводить следующим образом:
tlink @finresр
Заметьте, что имени файла должен предшествовать символ (@),
который указывает, что следующий файл является файлом подсказки.
Альтернативный способ заключается в том, что команду компоновки можно разбить на несколько файлов подсказки. Например,
представленную выше командную строку можно разбить на следующие
два файла подсказки:
| LISTOBJS | mainline+ wd+ ln tx |
| LISTLIBS | lib\comm+ lib\suррort |
Теперь команду TLINK можно ввести в следующем виде:
tlink /c @listobjs,fin,mfin,@listlibs
Параметры командной строки переопределяют параметры, заданные в файле подсказки.
В файле конфигурации TLINK.CFG (или TLINK32.CFG) задаются
параметры, которые обычно указываются в командной строке (но не
имена файлов). Это позволяет не набирать каждый раз в командной
строке одни и те же параметры. TLINK ищет файл с именем TLINK.CFG
сначала в текущем каталоге, затем в каталоге, из которого эта
утилита загружалась.
TLINK.CFG является обычным текстовым файлом, содержащим
список допустимых параметров TLINK. В отличие от файла подсказки,
файл TLINK.CFG не может перечислять имена файлов для компоновки.
Первая строка в отчете (отчетах) WINSPCTR.LOG показывает вам
дату и время возникновения исключительной ситуации. На второй
строке перечисляется:
тип исключительной ситуации;
имя модуля;
логический адрес;
физический адрес;
текущая задача во время особой ситуации.
Если указатель стека во время исключительной ситуации слишком мал, TOOLHELP.DLL автоматически переключает стек. Когда это
происходит, в конце второй строки файла регистрации выводится сообщение "Stack Switched".
Если каждый раз в командной строке используется один и тот
же набор параметров, то их можно перечислить в файле конфигурации. Это обычный текстовый файл, в котором параметры разделены
пробелами. По умолчанию BCC использует файл конфигурации с именем
TURBOC.CFG, а BCC32 - BCC32.EXE. Параметры командной строки переопределяют параметры файлов конфигурации.
При запуске Turbo Debugger использует следующие файлы конфигурации, инициализации и сеанса:
- TDCONFIG.TD
- TFCONFIG.TDW
- TDCONFIG.TD2
- TDW.INI
- XXXX.TR
- XXXXTRW
- XXXX.TR2
Файлы конфигурации TDCONFIG.TD, TDCONFIG.TDW и TDCONFIG.TD2
создаются с помощью отладчиков TD, TDW и TD32 соответственно. Параметры, установленные в этих файлах, переопределяют параметры,
используемые данными отладчиками по умолчанию. Вы можете модифицировать файлы конфигурации с помощью инсталляционных программ
TDINST.EXE. TDWINST.EXE и TD32.EXE.
TDW.INI - это файл инициализации, используемый TDW.EXE и
TD2.EXE. Он содержит установки для используемого отладчиком видеодрайвера, расположение файла TDWINTH.DLL (динамически компонуемой библиотеки, применяемой для отладчик в Windows), и параметры удаленной отладчик для WRSETUP.EXE.
Программа установки отладчика помещает TDW.INI в основной
каталог Windows. В этой копии TDW.INI параметр видеодрайвера
([VideoDLL]) устанавливается в SVGA.DLL, а установка DebuggerDLL
указывает маршрут к TDWINTH.DLL. Полное описание TDW.INI можно
найти в файле TD_HELP!.TXT. Файлы с расширениями .TR, .TRW и .TR2
содержат параметры состояния сеанса отладчиков.
Когда вы запускаете Turbo Debugger, он ищет файлы конфигурации в следующей последовательности:
в текущем каталоге;
в каталоге, заданном в установке Turbo Directory программы
установки Turbo Debugger;
в каталоге, содержащем выполняемый файл отладчика.
Если Turbo Debugger находит файл конфигурации, то параметры,
заданные в этом файле, переопределяют встроенные по умолчанию установки. Если при запуске Turbo Debugger вы указываете параметры
командной строки, то они переопределяют соответствующие значения
по умолчанию и значения, заданные в файле конфигурации.
Для поддержки доступных типов видеоадаптеров и мониторов TDW
и TD32 используют различные типы видео-DLL. При инсталляции Turbo
Debugger запустите программу установки TDWINI.EXE, которая поможет вам выбрать или модифицировать используемые отладчиками видео-DLL. По умолчанию TDW и TD32 используют драйвер SVGA.DLL, который поддерживает большинство видеоадаптеров и мониторов. Подробнее об этом рассказывается в оперативном справочнике Help
программы TDWINI.EXE.
Кроме того, Turbo Debugger поддерживает в TD, TDW и в TD32
отладку с двумя мониторами. Для этого вам потребуется цветной монитор и видеоадаптер и монохромный монитор и видеоадаптер. При
отладке с двумя мониторами Turbo Debugger выводится на монохромном мониторе, а отлаживаемая программа - на цветном. Это позволяет видеть во время отладки вывод программы. Для загрузки TD или
TDW в режиме с двумя мониторами используйте параметр командной
строки -do. При работе с TD32 в Windows 32s нужно использовать
видеобиблиотеку SVGA.DLL. В файл TDW.INI в раздел [VideoOptions]
для этого нужно включить mono=yes. Для установки параметров видеоадаптера используйте утилиту TDWINI.EXE.
Файлы описания проекта автоматизируют процесс построения
приложений Windows при использовании IDE Borland C++. Файлы описания проектов с расширением .PRJ содержат информацию о том, как
построить конкретное приложение. Используя такое инструментальное
средство как администратор проектов, вы можете создавать и обслуживать файлы проектов, описывающие каждое из разрабатываемых
приложений. Файлы описания проектов содержат список обрабатываемых файлов и параметры каждого используемого инструментального
средства. Эта информация используется администратором проектов
для автоматического построения приложения. Файлы описания проектов и администратор проектов - это эквиваленты формирующих файлов
и утилиты Make, но их легче обслуживать и использовать, чем формирующие файлы. Для установки параметров проекта можно использовать диалоговое окно Project Options интегрированной среды.
Файл определения модуля .DEF обеспечивает информацию о содержимом файла и требованиях к системе приложения Windows. Эта
информацию используется компоновщиком и включает в себя размер
динамически распределяемой памяти и стека, а также характеристики
кода и данных. Файл .DEF перечисляет также функции, которые должны быть доступными для других модулей (экспортируемые функции), и
используемые функции других модулей (импортируемые функции). Так
как компоновщик Borland имеет и другие способы получения этой информации, файл .DEF для него не обязателен. Файл .DEF содержит
несколько операторов. Перечислим некоторые из них:
|
NAME | Задает имя программы. Если нужно построить DLL,
используйте оператор LIBRARY. Каждый файл .DEF обязательно должен иметь оператор NAME или LIBRARY. Заданное имя должно совпадать с именем выполняемого файла. WINDOWAPI идентифицирует программу, как выполняемую программу Windows. |
|
DESCRIPTION | Позволяет вам задать строку, описывающую ваше
приложение или библиотеку. |
|
EXETYPE | Помечает файл, как выполняемый файл Windows (это
необходимо для всех выполняемых файлов Windows. |
|
CODE | Описывает атрибуты выполняемого сегмента кода
Параметр PRELOAD указывает загрузчику, что при загрузке приложения в память нужно загрузить эту часть образа файла. MOVEABLE указывает, что Windows может перемещать код в памяти. |
|
HEAPSIZE | Задает размер локальной динамически распределяе-
мой памяти приложения. |
|
STACKSIZE | Задает размер стека приложения. Для создания DLL
этот оператор использовать нельзя. |
Кроме указанных в файлах .DEF используются операции EXPORTS
и IMPORTS. Оператор EXPORTS перечисляет функции в программе или
DLL, которые будут вызываться другими приложениями или Windows
(экспортируемые функции или функции обратного вызова). Экспортируемые функции идентифицируются компоновщиком и вводятся в таблицу экспорта.
Чтобы избежать создания в файлах .DEF длинных секций
EXPORTS, в Borland C++ предусмотрено ключевое слово _export. Отмеченные этим ключевым словом функции будут идентифицироваться
компоновщиком и вводиться компоновщиком в таблицу экспорта.
Если в командной строке задается множества файлов и параметров, поместите их в файл подсказки. Эти текстовые файлы позволяют
задать более длинную команду, чем это допускает операционная система. Чтобы использовать файл подсказки, дайте команду:
BCC @[маршрут]файл_подсказки.rsp
В команде можно задать несколько файлов подсказки (через
пробел).
Приложения Windows обычно используют ресурсы. Ресурсы - это
пиктограммы, меню, диалоговые окна, шрифты, курсоры, битовые массивы и ресурсы, определенные пользователем. Ресурсы определяются
в файле, который называется файлом сценария ресурса. Эти файлы
имеют расширение .RC.
Для использования ресурсов вам потребуется компилятор ресурсов Borland BRC (Borland Resource Compiler) или BRC32, который
компилирует файл .RC в двоичных формат. При компиляции ресурсов
создается файл .RES. Компоновщик TLINK или TLINK32 позволяет
затем связать файл .RES с генерируемым им файлом .EXE. При этом
файл .EXE отмечается также как выполняемый файл Windows.
| DUAL8514.DLL | Видео-DLL, которые поддерживают отладку с
двумя мониторами для мониторов 8514. |
| STB.DLL | Видео-DLL, поддерживающая видео-адаптеры
STB. |
| TD.EXE | Отладчик для отладки приложений DOS. |
| TDDEBUG.386 | Этот драйвер используется TDW.EXE для доступа к специальным отладочным регистрами процессора 80386 (или старше). |
| TDHELP.TDH | Справочных файл для TD.EXE. |
| TDKBDW16.DLL | Файл поддержки для Windows 32s. |
| TDKBDW32.DLL | Файл поддержки для Windows 32s. |
| TDREMOTE.EXE | Драйвер, используемый в удаленной системе
для поддержки удаленной отладки в DOS. |
| TD32.ICO | Пиктограмма, используемая для TD32.EXE. |
| TD32HELP.TDH | Справочный файл для TD32.EXE. |
| TDVIDW16.DLL | Файл поддержки для Windows 32s. |
| TDVIDW32.DLL | Файл поддержки для Windows 32s. |
| TDW.EXE | Выполняемая программа для отладки 16-разрядных программ Windows. |
| TDW.INI | Файл инициализации, используемый TDW.EXE и |
| TD32.EXE. | Он создается программой инсталляции и помещается в основной каталог Windows. |
| TDWGUI.DLL | Видео-DLL, используемая для вывода окна отладчика TDW в Windows 3.х или TD32 в Windows 32s. |
| TDWHELP.TDH | Справочный файл для TDW.EXE. |
| TDWINTH.DLL | Поддерживающая DLL для TDW.EXE. |
| WREMOTE.EXE | Драйвер для удаленной отладки в Windows. |
| TDINST.EXE | Создает и модифицирует файл конфигурации
TDCONFIG.TD. |
| TDMEM.EXE | Выводит на экран доступную память компьютера, включая дополнительную и расширенную. |
| TDRF.EXE | Утилита передачи файлов, используемая для
передачи файлов в удаленную систему. |
| TD32INST.EXE | Создает и модифицирует файл конфигурации
TD32 - TDCONFIG.TD32. |
| TDSTRIP.EXE | Удаляет из файлов .EXE и .DLL используемую
отладчиком отладочную информацию (таблицу идентификаторов) без перекомпоновки файлов. |
| TDSTRP32.EXE | Удаляет из файлов .EXE и .DLL используемую
отладчиком отладочную информацию (таблицу идентификаторов) без перекомпоновки файлов. |
| TDUMP.EXE | Выводит на экран структуру 16- или 32-раз-
рядных файлов .EXE, .DLL и .OBJ, а также содержимое отладочную информацию об идентификаторах. |
| TDWINI.EXE | Позволяет изменить и настроить параметры
видеодрайвера отладчика. |
| TDWINI.HLP | Справочный файл для TDWINI.EXE. |
| TDWINST.EXE | Создает и модифицирует файл конфигурации |
| TDCONFIG.EXE. | Настраивает для TDW параметры
вывода и цвета экрана. |
| WRSETUP.EXE | Файл конфигурации для утилиты WREMOTE -
драйвера удаленной отладки. |
| TD_ASM.TXT | Файл с информацией по отладке программ
на Turbo Assembler, которая полезна также при отладке программ со встроенным ассебмлером. |
| TD_HELP!.TXT | Файл с ответами на общие вопросы. Среди
прочего в нем обсуждаются синтаксические отличия между анализом выражений в Turbo Debugger и компиляторах, отладка программ на нескольких языках др. |
| TD_HDWMP.TXT | Файл с информации о настройке конфигурации
отладчика для использования аппаратных отладочных регистров. |
| TD_RDME.TXT | Содержит последнюю информацию, отсутствую-
щую в руководстве. |
| TD_UTILS.TXT | Описывает утилиты отладчика, работающие в
режиме командной строки: TDSTRIP, TDUMP, TDWINST, TD32INST, TDSTRP32, TDMEM, TDMAP и TDUMP32. |
| MAKEFILE | Формирующий файл, используемый в примерах
программ. |
| TDWDEMO.BUG | Исходный код примера программы с ошибками
(для отладки). |
| TDWDEMO.H | Файл заголовка, используемых примером прог-
раммы. |
| TDWDEMO.ICO | Пиктограмма примера программы. |
| TDWDEMO.IDE | Файл проекта для примера программы. |
| TDWDEMO.RC | Файл ресурса для примера программы. |
| S_PAINT.C | Исходный код примера программы. |
| S_PAINT.EXE | Пример программы. |
Файлы-заголовки находятся в подкаталоге OWL\INCLUDE и содержат описания функций классов и определений типов данных и констант.
| applicat.h | TApplication | Управляет базовым повелением всех приложений ObjectWindows. |
| bitmapga.h | TBitMapGadget | Выводит на экран массив растровых изображений. |
| bitset.h | TBitSet | Устанавливает или сбрасывает один или более бит. |
| TCharSet | Устанавливает или сбрасывает байты. | |
| button.h | TButton | Создает различные виды
управляющих элементов типа командных кнопок. |
| buttonga.h | TButtonGadget | Создает реквизиты командных кнопок, которые можно выключать и включать щелчком "мыши". |
| cearray.h | TCelArray | Создает массив ячеек. |
| checkbox.h | TCheckBox | Представляет управляющий
элемент типа кнопки с независимой фиксацией. |
| chooseco.h | TChooseColor | Представляет режимное диалоговое окно с возможностью выбора цвета. |
| choosefo.h | TChooseFont | Представляет режимное диалоговое окно с возможностью выбора шрифта. |
| clipboar.h | TClipboard | Содержит функции, управляющие обработкой данных в буфере вырезанного изображения. |
| clipview.h | TClipboardViewer | Регистрирует TClipboardViewer как средство просмотра TClipboard. |
| color.h | TColor | Содержит функцию, используемую для упрощения
стандартной операции с цветом Windows. |
| combobox.h | TCombobox | Создает в окне комбинированный блок или управляющий элемент комбинированного блока и класс TComboBoxData, который используется для передачи данных между управляющими элементами. |
| commdial.h | TCommonDial | Абстрактный базовый класс для объектов TCommonDialog. |
| compat.h | Определяет служебные функции и константы ObjectWindows. | |
| control.h | Tcontrol | Используется для создания в производных классов управляющих объектов. |
| controlb.h | TControlBar | Реализует полосу инструментальных средств, обеспечивающую мнемонический доступ к командным кнопкам. |
| contolg.h | TControlGadget | Позволяет помещать управляющие элементы в окно реквизитов. |
| dc.h | TBandInfo, TClientDC, TDC, TDesktopDC, TIC, TDibDC, TPrintDC, TScreenDC, TWindowDC | Включающие классы GDI DC, создающие объекты DC. |
| decframe.h | TDecoratedFrame | Создает клиентное окно, куда можно поместить "декорации". |
| decmdifr.h | TDecoratedMDIFrame | Создает объект рамки, поддерживающий "декорированные" дочерние окна. |
| dialog.h | TDialog | Создает режимное и безрежимное диалоговое окно с интерфейсными элементами. |
| TDialogAttr | Содержит атрибуты диалогового окна. | |
| dispatch.h | Определяет функции диспетчеризации, созданные для обработки сообщений Windows. | |
| docmanag.h | TDocManager | Создает объект администратора документов, который работает с документами и шаблонами. |
| TDocTemplate | Создает шаблоны. | |
| docview.h | TDocument, TView, TStream, TInStream, TWindowView, TOutStream | Создает, уничтожает и посылает сообщения о просмотре документов. |
| edit.h | TEdit | Создает управляющий интерфейсный элемент редактирования. |
| editfile.h | TEditFile | Создает окно редактирования файла. |
| editsear.h | TEditSearch | Создает управляющий элемент редактирования, отвечающий за команды поиска и замены. |
| editview.h | TEditView | Оболочка просмотра для TEdit. |
| except.h | TXOwl | Базовый класс обработки исключительных ситуаций. |
| TXOutOfMemory | Описывает исключительную
ситуацию нехватки памяти. | |
| TXCompatibility | Описывает исключительную
ситуацию состояния. | |
| TStatus | Используется для обратной
совместимости. | |
| filedoc.h | TFileDocument | Открывает и закрывает область просмотра документа. |
| findrepl.h | TFindDialog, TFindReplaceDialog | Эти классы создают и определяют атрибуты безрежимных диалоговых окон, отвечающих на команды поиска и замены. |
| floatfra.h | TFloatingFrame | Реализует в родительском
окне свободную рамку. |
| framewin | TFrameWindow | Управляет специфическим для окна поведением, таким как перемещение с помощью клавиатуры и обработка команд. |
| TMenuDesc | Описывает строку меню. | |
| gadget.h | TGadget | Создает объект реквизита, принадлежащий окну реквизитов и имеющий заданные атрибуты. |
| gedgetwi.h | TGadgetWindow | Обслуживает для окна список неперекрывающихся реквизитов. |
| gdibase.h | TGdiBase | Абстрактный базовый класс
для классов GDI. |
| gdiobjec.h | TGdiObject | Базовый класс GDI. |
| TPen, TBrush, TFont, TBitMap, TPalette, TIcon, TCusor, TDib, TRegion. | Эти классы специфицируют объекты GDI. | |
| groupbox.h | TGroupBox | Создает групповой объект,
представляющий элемент группового блока в Windows. |
| inputdia.h | TInputDialog | Общее диалоговое окно. |
| keymodet.h | TKeybardModeTracker | Смешанный класс, созданный для отслеживания изменений режимов клавиатуры. |
| layoutco.h | TLayoutConstraint | Создает ограничения разметки. |
| layoutwi.h | TLayoutMetrics | Создает ограничения разметки, используемые для характеристик разметки в окне. |
| listbox.h | TListBox | Создает объект блока списка. |
| TListBoxData | Используется для передачи контекста блока списка. | |
| listview.h | TListView | Обеспечивает просмотр блоков списка. |
| mdi.h | TMDIClient | Управляет дочерними окнами MDI. |
| TMDIFrame | Основное окно MDI-приложения. | |
| mdichild.h | TMDIChild | Определяет поведение дочернего окна MDI. |
| menu.h | TMenu, TPopupMenu, TSystemMenu | Создает объекты меню. |
| messageb.h | TMessageBar | Реализует строку сообщения. |
| metafile.h | TMetaFileBar | Класс-оболочка для TMetaFileDC. |
| module.h | TModule | Определяет базовое поведение для библиотек и приложений ObjectWindows. |
| opensave.h | TOpenSave | Базовый класс для режимных диалоговых окон открытия и сохранения. |
| owlall.h | Включаемый файл для всех классов ObjectWindows. | |
| owlcore.h | Включаемый файл для классов ядра ObjectWindows. | |
| owldefs.h | Определения макрокоманд, используемых в программах ObjectWindows. | |
| owlpch.h | Определения макрокоманд, данных и функций, используемых в программах ObjectWindows. | |
| point | TPoint, TSize, TRect | Математические классы. |
| TDropinfo | Поддерживает операции буксировки имени файла. | |
| TProcInstance | Класс поддержки Win16. | |
| TPointer | Обеспечивает надежную работу с указателями. | |
| preview.h | TPreviewPage | Выводит страницу документа в окне предварительного просмотра. |
| printdia.h | TPrintDialog | Выводит диалог печати или режимное окно печати. |
| printer.h | TPrinter | Представляет устройство печати. |
| TPrintout | Представляет печатаемый документ. | |
| TPrinterAbortDlg | Представляет диалоговое окно прерывания печати. | |
| radiobut.h | TRadioButton | Создает управляющий элемент типа кнопки с зависимой фиксацией. |
| scrollba.h | TScrollBar | Представляет управляющий элемент типа вертикальной или горизонтальной полосы прокрутки. |
| TScrollBarData | Содержит значения позиции указателя полосы прокрутки. | |
| scroller.h | TScroller | Реализует автоматическую прокрутку окна. |
| signatur.h | Определяет шаблоны сигнатуры обработки сообщений, используемых функциями обработки событий ObjectWindows. | |
| slider.h | TSlider | Определяет базовое поведение скользящих маркеров. |
| THSlider | Горизонтальный скользящий маркер. | |
| TVSlider | Вертикальный скользящий маркер. | |
| static.h | TStatic | Создает в окне статический управляющий элемент. |
| statusba.h | TStatusBar | Строит строку состояния. |
| textgadg.h | TTextGadget | Строит дополнительный текстовый объект. |
| tinycarp.h | TTinyCaption | Создает для окна меньшую строку заголовка. |
| toolbox.h | TToolBox | Создает инструментальный объект с заданным числом строк и столбцов. |
| validate.h | TValidator | Базовый класс проверки допустимости. |
| TPictureValidator | Средство проверки допустимости картинки. | |
| TFilterValidator | Средство проверки допустимости фильтра. | |
| TRangeValidator | Средство проверки допустимости диапазона. | |
| TLookupValidator | Средство проверки допустимости преобразования. | |
| TStringLookupValidator | Средство проверки допустимости строки. | |
| vbxctl.h | TVbxControl | Интерфейс для управляющих элементов VBX. |
| TVbxEventHandler | Обрабатывает события от управляющих элементов VBX. | |
| version.h | Определяет внутренний номер версии библиотеки ObjectWindows. | |
| window.h | TWindow | Обеспечивает специфическое для окна поведение и инкапсулирует многие функции API. |
| windowev.h | Определяет обработчики событий и таблицы макрокоманд реакции на сообщения Windows. |
Фатальные ошибки генерируются компилятором, компоновщиком и утилитой MAKE и приводят с немедленному прекращению процесса компиляции. Если такую ошибку генерирует компилятор или утилита MAKE, то файл .EXE не создается. Если фатальная ошибка генерируется компоновщиком, то файл .EXE может создаваться.
Фатальные ошибки встречаются редко. Некоторые из них указывают на внутреннюю ошибку компилятора. Вы должны выполнить соответствующие действия, а затем
| skipws | Пропускает при вводе пробелы и разделители. |
| left | Выравнивание вывода влево. |
| right | Выравнивание вывода влево. |
| internal | Дополнение после знака или указателя основания. |
| dec | Десятичное преобразование. |
| oct | Восьмеричное преобразование. |
| hex | Шестнадцатиричное преобразование. |
| showbase | Показывает в выводе индикатор основания. |
| showpoint | Показывает при выводе с плавающей точкой десятичную точку. |
| uppercase | Преобразует шестнадцатиричный вывод в верхний
регистр. |
| showpos | Выводит с положительными числами символ '+'. |
| scientific | Добавляет к числам с плавающей точкой суффикс
с показателем степени (E). |
| fixed | Для вывода чисел с плавающей точкой использует десятичную фиксированную точку. |
| unitbuf | После включения выводит все потоки. |
| stdio | После включения выводит stdout и stderr. |
Класс (Модуль) Функции Стили
Ромбы после классов при получении окном любого сообщения
становятся черными. Это позволяет видеть, какие окна получают в
данный момент сообщения. Если дочерние окна данного окна в дереве
убраны, то будет инвертироваться ромб данного окна, что указывает
на активность дочерних окон.
"Класс" - это имя класса. Некоторые предопределенные классы
Windows имеют числовые номера. Например, в качестве имени класса
всплывающего меню используется число 32768. Для таких классов показывается как номер, так и имя, например, #32768:PopupMenu. Однако фактическое имя класса состоит только из числа. В формате MAKEINTRESOURCE используется также идентификатор ресурса.
"Модуль" - это имя выполняемого модуля (.EXE или .DLL), который зарегистрировал класс.
"Функция" - это адрес функции класса окна.
"Стили" представляют собой стили cs_ класса. Их имена совпадают с определениями cs_ в файле windows.h, но cs_ удаляется, и
имя указывается с различным регистром символов.
Описатель {Класс} Модуль Позиция "Заголовок"
Линии слева показывают структуру дерева. С помощью этих линий каждое окно соединяется с его предком, "братскими" окнами и
потомками. Линии рисуются таким же образом, как в администраторе
файлов. Ромб после каждого окна показывает, имеет ли окно дочерние окна. Если он пустой, то дочерних окон нет. Если он содержит
символ +, то дочерние окна имеются, но они не показаны. Если он
содержит символ -, то имеются дочерние окна, и они выведены в
древовидной схеме (видим по крайней мере один уровень дочерних
окон, другие уровни могут быть скрыты).
"Описатель" - это описатель окна, возвращаемый CreateWindow.
"Класс" - это имя класса окна, описанного в области списка
классов.
"Модуль" - это имя выполняемого модуля (.EXE или .DLL), который создал окно. Строго говоря, это имя модуля, являющегося
владельцем сегмента данных, переданного как параметр hInstance
функции CreateWindow.
"Позиция" может либо не указываться, если окно скрыто, либо
это (x_Begin,y_Begin)-(x_End,y_End), если окно является видимым.
Для окон верхнего уровня это координаты экрана. Для порожденных
окон это координаты в области пользователя родительского окна,
которое используется в CreateWindow для создания порожденного окна.
"Заголовок" - это заголовок окна или текст, возвращаемый
функцией GetWindowText или сообщением WM_GETTEXT. Если заголовок
- это нулевая строка, то кавычки опускаются.
Описатель ["Заголовок" {Класс}] Сообщение Статус
"Описатель" - это описатель окна, получающего сообщение.
"Заголовок" - это заголовок окна. Если заголовок - это нулевая строка, то вместо него выводится имя класса (в фигурных скобках).
"Сообщение" - это имя сообщения, определенное в файле WINDOWS.H. Существуют также неописанные сообщения Windows, показанные символами в нижнем регистре. Номера неизвестных сообщений
(определенных пользователем) показываются как WM_USER+OxXXXX, если они больше или равны WM_USER, или WM_OxXXXX, если они меньше
WM_USER. Номера зарегистрированных сообщений (из RegisterWindowsMessage) показываются вместе с их зарегистрированными именами в
одиночных кавычках.
"Статус" представляет собой следующее:
Значение Dispatched показывает, что сообщение получено через DispatchMessage.
Значение Sent [from XXXX] показывает, что сообщение применяется через SendMessage. Если оно посылалось через другое
окно, то from XXXX показывает описатель окна. Если оно посылалось из того же окна, что и принимает сообщение, то
указывается fromself. Если сообщение поступает от Windows,
то часть from... опускается.
Return показывает, что сообщение было принято через
SendMessage и теперь возвращается.
Дополнительная информация, относящаяся к каждому сообщению. В случае возвращаемого сообщения здесь показывается
это значение (в числовой форме или с более конкретной информацией по сообщению, например, wm_GETTEXT. Для посылаемых и диспетчеризуемых сообщений здесь показывается параметры сообщения. WinSight интерпретирует параметры таким
образом, чтобы получилась читаемая форма. Для сообщений,
имеющих связанные с ними структуры данных (например,
WM_CREATE) она перехватывает эти структуры и включает их в
вывод.
Форматирование ввода и вывода определяется различными флагами состояний формата, перечисленными в классе ios. Эти состояния
определяются битами числа типа long int следующим образом:
public:
enum {
skipws = 0x0001, // пропуск пробельного символа на
// вводе
left = 0x0002, // вывод с левым выравниванием
right = 0x0004, // вывод с правым выравниванием
internal = 0x0008, // заполнитель после знака или
// указателя системы счисления
dec = 0x0010, // десятичное преобразование
oct = 0x0020, // восьмиричное преобразование
hex = 0x0040, // шестнадцатиричное преобразование
showbase = 0x0080, // показать на выходе указатель
// системы счисления
showpoint = 0x0100, // показать позицию десятичной точки
// (на выходе)
uppercase = 0x0200, // вывод шестнадцатиричных значений
// буквами верхнего регистра
showpos = 0x0400, // показать знак "+" для
// положительных чисел
scientific = 0x0800, // использовать запись чисел с плава-
// ющей точкой с выводом экспоненты Е
// например, 12345E2
fixed = 0x1000, // использовать запись чисел с плава-
// ющей точкой типа 123.45
unitbuf = 0x2000, // сброс на диск всех потоков
// после вставки
stdio = 0x4000, // сброс на диск stdout и stderr после
// вставки
};
Эти флаги читаются и устанавливаются функциями-элементами
flags, setf и unsetf.
Графические функции Borland C++ делятся на несколько категорий:
функции управления графической системой;
функции черчения и заполнения;
функции манипулирования экранами и графическими окнами;
функции вывода текстов;
функции управления цветами;
функции обработки ошибок;
функции запроса состояния.
TDocument предусматривает ряд функций для доступа к данным.
Вы можете обращаться к данным в простом последовательном потоке
или тем способом, который зададите в производных классах.
TDocument предусматривает две функции InStream и OutStream,
которые возвращают указатель на TInStream и TOutStream. Базовые
версии этих функций не выполняют никаких действий и возвращают 0.
В производном классе их нужно переопределить, чтобы они возвращали указатель на объект. Таким образом вы можете обеспечить в
классе документа доступ к потокам.
TInStream и TOutStream - это абстрактные базовые классы,
производные от isteam и ostream класса TStream. TStream обеспечивает минимальные функции для связи потока с документом, а isteam
и ostream - это стандартные потоки С++. Из TInStream и TOutStream
нужно создать производные потоковые классы, специфические для
приложения. Эти классы имеют функции для работы с потоками.
Каждый документ поддерживает список открытых потоков, который обновляет при добавлении или удалении потоков. В начале этого
списка находится элемент данных StreamList класса TDocument, который указывает первый поток в списке или содержит 0. Каждый объект TStream в списке имеет функцию-элемент NextStream, которая
указывает на следующий поток в списке.
Потоки могут обеспечивать только простой последовательный
доступ к данным. Если документы содержат файлы мультимедиа, таблицы баз данных или другие сложные данных, то вам потребуются более развитые методы доступа. Для этой цели в TDocument имеется
еще две функции доступа - Open и Close, которые вы можете переопределить и задать нужное поведение при открытии и закрытии. На
определение открытия документа никаких ограничений не накладывается. Вы можете задать настолько простое или сложное открытие,
насколько это требуется.
Close обеспечивает несколько больше функциональных возможностей. Эта функция проверяет существующие дочерние объекты документа и перед закрытием документа пытается закрыть их все. Данная
функция позволяет закрыть документ, когда это требуется.
TDocument имеет также ряд функций, позволяющих вам защитить
данные. IsDirty проверяет, был ли документ модифицирован. IsOpen
проверяет состояние документа (открыт он или нет) или наличие потоков в списке. Commit сохраняет изменения данных в памяти. Revert выполняет действие, обратное Commit.
Как вы уже видели раньше, классы С++ могут содержать в качестве
своих элементов не только данные, но и функции элементы. Функция эле
мент - это функция, объявленная внутри определения класса и тесно
связанная с типом этого класса. В нашем примере - это операции которые выполняются в сберегательных банках. Наш объект sber_bank имеет
функции элементы deposite (вкладывать) и withdraw (снимать) деньги.
sber_bank
Объект сбербанк
< deposit << Вклад денег
$$$ < >
<
Данные > withdraw >> Снятие денег
Функции элементы
Наглядное представление функции элемента withdraw() приводится
ниже:
Селектор
Определяемый класс Имя функции элемента
Возвращаемый тип Аргумент
v v v v v
double sber_bank::withdraw(double bucks)
{
big_bucks -= bucks;
if (big_bucks < 0.0) {
printf("К сожалению, товарищ, у вас нет таких денег!\n");
big_bucks -= 10.0; // Штрафная санкция
}
return big_bucks;
}
Обратите особое внимание на использование операции селектор области действия '::' между определяемым классом и функцией элементом.
Имя класса sber_bank используется для указания компилятору, к какому
классу принадлежит withdraw (так как могут иметься и другие варианты
withdraw, принадлежащие другим классам). При внутреннем определении
селектор '::' не потребуется, так как и так ясно, что withdraw принадлежит классу sber_bank.
По аналогии, при обращении функций к элементам своего объекта,
селектор '.' лишний:
double sber_bank::withdraw(double bucks)
{
Обращение к данным своего объекта
v (не указывается принадлежность
big_bucks -= bucks; объекту - sber_bank.)
if (big_bucks < 0.0) {
printf("К сожалению, товарищ, у вас нет таких денег!\n");
big_bucks -= 10.0; // Штраф за перерасход
}
return big_bucks;
}
Утилита IMPDEF создает редактируемый исходный файл, который
перечисляет все экспортные функции в DLL. Вы можете отредактировать этот файл .DEF так, чтобы он содержал только те функции, которые вы хотите сделать доступными для нужной прикладной программы, а затем выполнить IMPLIB для отредактированного файла .DEF. В
результате получается библиотека импорта, которая содержит информацию импорта для заданного подмножества экспортируемых функций
DLL.
Например, пусть вы определяете DLL, которая предоставляет
функции для использования различными прикладными программами.
Каждая экспортируемая функция в DLL определяется с помощью оператора _exрort. Теперь, если все прикладные программы используют
все экспортируемые функции DLL, вы можете просто использовать
IMPLIB для создания одной библиотеки импорта для DLL и поставлять
эту библиотеку импорта с DLL. Библиотека импорта может быть скомпонована с любыми прикладными программами, исключая таким образом
необходимость перечисления для каждой прикладной программы каждой
используемой ей функции DLL в секции IMPORT файла определения модуля.
Теперь, пусть нужно передать некоторую часть экспортируемых
функций DLL отдельной прикладной программе. В идеале требуется
скомпоновать специальную библиотеку импорта с этой прикладной
программой - библиотеку импорта, которая предоставляет только
подмножество функций, которые будут использоваться прикладной
программой. Все другие экспортируемые функции в DLL для клиентной
прикладной программы должны быть скрыты.
Для создания библиотеки импорта, которая удовлетворяет этим
условиям, выполните IMPDEF для откомпилированной и скомпонованной
DLL. Утилита IMPDEF создаст файл определения модуля, который содержит в секции EXPORT перечисление всех экспортируемых функций
DLL. Вы можете редактировать этот файл определения модуля, удаляя
компоненты секции EXPORTS для тех функций, которые вы не хотите
включать в библиотеку импорта. После того, как вы удалите ненужные экспортируемые функции, выполните утилиту IMPLIB для файла
определения модуля. Результатом будет библиотека импорта, которая
содержит информацию импорта только для экспортных функций, перечисленных в секции EXPORTS файла определения модуля.
Утилита TLIB: турбо библиотекарь
Почему следует использовать библиотеки объектных модулей
Командная строка утилиты TLIB
Использование файлов подсказки
Создание расширенного словаря: параметр /E
Задание размера страницы: параметр /P
Различимость регистра символов в идентификаторе: параметр /C
Удаление записей-комментариев: параметр /O
Список операций
Примеры
Ниже приводится краткое изложение функций запроса состояния
графического режима:
| getarccoords | Возвращает информацию о координатах, заданных
в последнем вызове arc или ellipse. |
| getaspectratio | Возвращает коэффициент сжатия для графического экрана. |
| getbkcolor | Возвращает текущий цвет фона. |
| getcolor | Возвращает текущий цвет вычерчивания. |
| getdrivername | Возвращает имя текущего графического драйвера. |
| getfillpattern | Возвращает шаблон заполнения, определяемый пользователем. |
| getfillsettings | Возвращает информацию о текущем шаблоне и
цвете заполнения. |
| getgraphmode | Возвращает текущий графический режим. |
| getlinesettings | Возвращает текущие стиль, шаблон и толщину
линии. |
| getmaxcolor | Возвращает максимально допустимое на текущий момент значение элемента изображения. |
| getmaxmode | Возвращает максимально допустимый номер режима для текущего драйвера. |
| getmaxx | Возвращает текущее разрешение по оси x. |
| getmaxy | Возвращает текущее разрешение по оси y. |
| getmodename | Возвращает имя данного режима драйвера. |
| getmoderange | Возвращает диапазон режимов для данного
драйвера. |
| getpalette | Возвращает текущую палитру и ее размер. |
| getpixel | Возвращает цвет элемента изображения в (x,y). |
| gettextsettings | Возвращает текущий шрифт, направление, размер
и способ выравнивания текста. |
| getviewsettings | Возвращает информацию о текущем графическом
окне. |
| getx | Возвращает координату x текущей позиции (CP). |
| gety | Возвращает координату y текущей позиции (CP). |
В каждой из категорий графических функций Borland C++ имеется хотя бы одна функция запроса состояния. Эти функции упоминались при рассмотрении соответствующих категорий и также рассматриваются здесь отдельно. Каждая из графических функций запроса
состояния Borland C++ имеет имя вида "get что-то" (за исключением
категории функций обработки ошибок). Некоторые из них не воспринимают никаких аргументов и возвращают единственное значение,
представляющее собой искомую информацию. Прочие считывают указатель структуры, определяемой в файле graphics.h, заполняют эту
структуру соответствующей информацией и не возвращают никаких
Виртуальная функция-элемент Error предупреждает пользователя, что содержимое редактируемого управляющего элемента не проходит проверки допустимости. Стандартные объекты проверки допустимости представляют простое диалоговое окно, уведомляющее пользователя, что содержимое ввода является недопустимым, и указывает,
какой должна быть вводимая информация.
Хотя большинство производных объектов переопределяют Error,
ее не следует вызывать непосредственно. Valid вызывает Error, если IsValid возвращает False.
Виртуальная функция-элемент IsValid вызывается функцией Valid, которая передает IsValid проверяемую строку текста. IsValid
возвращает True, если строка представляет допустимые данные. IsValid выполняет фактическую проверку допустимости, так что при
создании собственных объектов проверки допустимости вам потребуется переопределить эту функцию. Обратите внимание, что IsValid
не вызывается непосредственно. Это делается через Valid, которая
вызывает Error, если IsValid возвращает False. Это позволяет отделить проверку допустимости от сообщения об ошибке.
Когда редактируемый управляющий элемент распознает нажатие
клавиши, он вызывает функцию-элемент IsValidInput, обеспечивающую
допустимость введенного элемента. По умолчанию эта функция всегда
возвращает True, то есть воспринимаются все клавиши, но в некоторых производных объектах проверки допустимости IsValidInput отфильтровывает нежелательные символы. Эта функция имеет два параметра. Первый параметр указывает на текущий проверяемый текст
ввода. Второй указывает, нужно ли заполнять строку ввода перед
проверкой допустимости (это используется только в TPXPictureValidator).
Аргументы функции main (argc, argv и env) всегда передаются
функции main подпрограммой инициализаци и Borland С++.
argc (тип integer) - число аргументов командной строки.
argv - массив указателей на строки (char *[]). В версиях
DOS 3.x argv[0] - полное (т.е. включая маршрут доступа)
имя запускаемой программы. argv[x] - параметр, набранный
в командной строке после функции (порядковый номер - x).
env - также массив указателей на строки. Каждый элемент
env[] содержит строку вида ENVVAR = value. Аргумент env
доступен также через глобальную переменную environ. argc и
argv также доступны через глобальные переменные _argc и
_argv.
Для использования соглашения о связях Паскаля можно использовать ключевое слово cdecl. Например:
cdecl main(int argc, char *argv[], char *envp[])
Устанавливает функцию, вызываемую, когда operator new() или
operator new[] не могут выделить запрошенную память. По умолчанию
операции new генерируют в этом случае исключительные ситуации
xalloc. Это поведение можно переопределить вызовом для установки
нового обработчика set_new_handler. Для возврата к обычной версии
используйте set_new_handler(0).
Заданный пользователем обработчик должен выполнять возврат
после освобождения памяти, генерировать исключительную ситуацию
xalloc и вызывать функции abort или exit.
Позволяет вам установить функцию, определяющую поведение
программы при ее завершении, когда не найден обработчик исключительной ситуации. Заданная функция описывается как функция типа
terminate_function. Такая функция не имеет аргументов и возвращает void.
По умолчанию указанная исключительная ситуация возникает при
вызове в программе функции terminate. Обычно это приводит к вызову abort. Затем программа завершается с сообщением "Abnormal
program termination". Если вы хотите вызывать в terminate другую
функцию, то можете ее определить. Такая функция называется функцией завершения и позволяет вам выполнять действия, не реализованные в abort. Функция завершения не должна возвращаться в terminate.
Позволяет установить функцию, определяющую поведение программы при возникновении исключительной ситуации, не описанной в
списке спецификаций. Действия описываемой функции зависят от типа
функции. Функция типа unexpected_function - это функция без аргументов, возвращающая void.
По умолчанию непредвиденные исключительные ситуации приводят
к вызову unexpected. Если определена unexpected_func, то unexpected вызывает далее unexpected_func, куда и передается управление
программой. В противном случае вызывается terminate. По определению unexpected_func не возвращает управление в unexpected.
Вызывается функцией unexpeccted или программой, если не найден обработчик исключительной ситуации. По умолчанию она вызывает
функцию abort. Вы можете модифицировать способ завершения программы при генерации исключительной ситуации, не перечисленной в
списке спецификаций. Если вы не хотите, чтобы программа завершалась вызовом abort, то можете определить собственную функцию.
Вызывается, когда функция генерирует исключительную ситуацию, не перечисленную в списке спецификаций. Программа вызывает
unexpected, которая по умолчанию вызывает определенную пользователем функцию, зарегистрированную с помощью set_unexpected. Если
такой зарегистрированной функции нет, то вызывается terminate.
Функция unexpected не возвращает управления, однако может генерировать исключительную ситуацию.
Функция-элемент Valid вызывается соответствующим объектом
редактируемого управляющего элемента для проверки допустимости
вводимых данных. Аналогично функции CanClose для интерфейсных
объектов Valid возвращает True только если переданная ей строка
содержит допустимые данные.
При использовании объектов проверки допустимости с редактируемыми управляющими элементами переопределять или вызывать функцию Valid объекта проверки допустимости вам не нужно. Здесь достаточно наследуемой версии Valid. По умолчанию Valid возвращает
True, если возвращает True функция-элемент IsValid. В противном
случае она вызывает функцию Error для уведомления пользователя об
ошибке и возвращает False.
В качестве основной точки входа приложения Windows вы должны
предусмотреть функцию WinMain. Некоторые приложения (например,
ObjectWindows) инкапсулируют эту точку входа. В WinMain передаются следующие параметры:
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
Параметр hInstance - это описатель экземпляра приложения.
Каждый экземпляр приложения Windows имеет уникальный описатель
экземпляра, используемый в качестве аргумента в нескольких функциях Windows. Он может также использоваться, чтобы различать несколько экземпляров данного приложения.
Параметр hPrevInstance - это описатель предыдущего экземпляра данного приложения. hPrevInstance равно NULL, если это первый
экземпляр (в Win32 это значение всегда равно 0).
lpCmdLine представляет собой указатель (в 16-разрядной
Windows указатель типа far) на командную строку с завершающим нулем. Это значение может задаваться при вызове приложения из администратора программ или через вызов WinExec.
nCmdShow - это целое значение, определяющее, как выводить на
экран окно приложения (например, в виде пиктограммы).
Возвращаемое WinMain значение в данный момент Windows не используется, однако оно может быть полезным при отладке.
General error
Сообщение об ошибке утилиты TLINK
(общая ошибка)
TLINK выводит максимум информации о том, что происходит во
время неизвестной фатальной ошибки.
General error in library file имя_файла in module модуль near module file offsef Oxyyyyyyyy
Сообщение об ошибке утилиты TLINK
(общая ошибка в библиотечном файла в модуле модуль, смещение
Oxyyyyyyyy)
TLINK выводит максимум информации о том, что происходит во
время неизвестной фатальной ошибки.
General error in module модуль near module file offsef Oxyyyyyyyy
Сообщение об ошибке утилиты TLINK
(общая ошибка в модуле модуль, смещение Oxyyyyyyyy)
TLINK выводит максимум информации о том, что происходит во
время неизвестной фатальной ошибки.
Global anonimous union not static
Сообщение об ошибке этапа компиляции
(глобальное анонимное объединение не является статическим)
В С++ глобальное анонимное объединение на уровне файла должно быть статическим (static).
Goto bypassed initialization of local variable
Сообщение об ошибке этапа компиляции
(конструкция goto обошла инициализацию локальной переменной)
В С++ недопустимо любым способом обходить инициализацию локальной переменной. В данном случае в конструкции goto управление
передается за точку инициализации локальной переменной.
Goto into exception handler is not allowed
Сообщение об ошибке этапа компиляции
(переход в обработчик особой ситуации не допускается)
Недопустимый переход в блок try или подключенный к нему обработчик особой ситуации.
Goto statement missing label
Сообщение об ошибке этапа компиляции
(отсутствует метка в операторе goto)
За ключевым словом goto должен следовать идентификатор.
Group группа exceeds 64К
Сообщение об ошибке утилиты TLINK
(группа "группа" превышает 64К)
При комбинировании сегментов размер группы превысил 64К.
Group overflowed maximum size: группа
Сообщение об ошибке этапа компиляции
Общий размер сегментов в группе (например, DGROUP) превысил
64.
Group группа_1 overlaps group группа_2
Предупреждение утилиты TLINK
(группа_1 перекрывает группу_2)
Это означает, что TLINK обнаружил вложенные группы. Данное
предупреждение возникает только при использовании оверлеев или
при компоновке программ Windows.
Азы С++.
Си с классами
Поддержка объектно-ориентированного программирования
Возможности Borland C++ версии 4.0
Что же такое объекты?
Классы - как строительные блоки
Создание новых классов sber_bank
Защита данных
Конструкторы и деструкторы
Конструкторы
Вызов конструкторов
Деструкторы
Вызов деструкторов
Конструкторы, деструкторы и динамическая память
Функции элементы (методы)
Вызов функций-элементов
Передача значений в C++
Введение в классы
Элементы классов
Инкапсуляция или скрытие данных
Скрытие данных в потомках
Наследование
Иерархия классов
Множественное наследование
Выгода от наследования
Расширяемость кода
Пример наследования
Класс Circle
Класс Cylinder
Класс Rectangle
Класс Box3d
Странные вызовы конструктора
Несколько слов о проектировании иерархии классов
Обзор и важные концепции
Полиморфизм
Связывание функций
Ранее связывание с помощью переопределяемых функций
Переопределение операций
Позднее связывание с использованием виртуальных функций
Связывание значения с функциями-элементами
Изучение ООП на маленьком примере
Алгоритм декомпрессии для выполнения группового кодирования
Начнем с алгоритма декомпрессии на языке Cи
Улучшение алгоритма
Наш декомпрессор в стиле фильтра
Ниже описан главный фрагмент нашей программы декомпрессии
Достижение больших выгод от объектно-ориентированного стиля
Более легкий подход в Borland С++
На передовой Borland С++
Конструктор - декомпрессор
Приведем полный текст программы
Переменные alias
Использование переменных alias, как параметров
Переменные-ссылки, используемые в качестве аргументов
Использование ключевого слова void.
Аргументы функции элемента, принимаемые "по умолчанию"
Прототипы функций
Динамическое использование памяти (операции new и delete)
Потоки ввода-вывода
Встроенные функции
Виртуальные функции элементы
Пример класса с виртуальными функциями элементами
Объявление виртуальных функций элементов
Когда тип не проверяется
Дружественные функции
Заключение
Назад | Содержание | Вперед
Справочная информация по программированию
Ключевые слова Borland C++
Ключевые слова Borland C++
Расширения Borland C++ по сравнению с Си стандарта ANSI
Ключевые слова, специфические для C++
Регистровые псевдопеременные Borland C++
Идентификаторы
Константы
Описание операций
Описание операций
Унарные операции
Бинарные операции
Пунктуаторы
Ссылки
Ссылки
Предопределенные макрокоманды
Что такое поток?
Библиотека iostream
Потоковый вывод
Основные типы
Форматирование ввода-вывода
Манипуляторы
Манипуляторы потока
Потоковый ввод
Библиотечные классы Borland
Библиотечные классы Borland
Каталоги контейнеров
Библиотека INCLUDE
Библиотека классов постоянных потоков
Программирование для Windows
Файлы сценариев ресурсов
Файлы определения модуля
Библиотеки импорта
Функция WinMain
Начальный и завершающий код
Параметры экспорта и импорта
Параметры -W и -WC
Параметр -WE
Параметр -WS
Параметр -WSE
Параметры -WD и -WCD
Параметры -WDE и -WCDE
Выводы
Файлы описания проектов
Файлы описания проектов
Администратор динамически распределяемой области памяти
32-разрядное программирование в Windows
32-разрядное программирование в Windows
Win32
Написание переносимого кода Windows
Типы UINT и WORD
WINAPI и соглашения по вызову CALLBACK
Данные сообщения и обработка сообщений
Переносимость системных вызовов DOS
Общие сообщения об ошибках и предупреждения компилятора
Построение выполняемых файлов Win32
Библиотеки DLL
Стандарты ANSI, зависящие от реализации
Сообщения, генерируемые только для Win32
Назад | Содержание | Вперед
Справочник по работе с DOS
Управление памятью в DOS
Управление памятью в DOS
Нехватка памяти при выполнении
Модели памяти
Регистры процессора
Сегментация памяти
Указатели
Модели памяти
Модели памяти
Сегментация для модели памяти tiny
Сегментация для модели памяти small
Сегментация для модели памяти medium
Сегментация для модели памяти compact
Сегментация для модели памяти large
Сегментация для модели памяти Huge
Модели памяти
Программирование со смешанными моделями и модификаторы адресации
Программирование со смешанными моделями и модификаторы адресации
Указатели сегментов
Объявление дальних объектов
Объявление ближних или дальних функций
Объявление указателей near, far или huge
Создание указателя данного адреса "сегмент:смещение"
Использование библиотечных файлов
Компоновка смешанных модулей
Оверлеи (VROOMM)
Оверлеи (VROOMM)
Работа программ с оверлеями
Распределение памяти для оверлейных структур
Оптимальное использования оверлеев Borland C++
Требования
Оверлеи и обработка исключительных ситуаций
Использование оверлеев
Разработка программ с оверлеями
Отладка оверлейных программ
Внешние подпрограммы в оверлеях
Свопинг
Математические операции
Математические операции
Операции ввода-вывода с плавающей точкой
Сопроцессор
Эмуляция платы 80х87
Использование кода 80х87
Получение кода без операций с плавающей точкой
Параметр быстрых вычислений с плавающей точкой
Переменная операционной среды 87
Регистры и сопроцессор 80х87
Отмена обработки особых ситуаций для операций с плавающей точкой
Математические операции с комплексными числами
Использование двоично-десятичной арифметики (BCD)
Преобразования двоично-десятичных чисел
Число десятичных знаков
Видео-функции
Видео-функции
Видеорежимы
Текстовые и графические окна
Программирование в графическом режиме
Функции библиотеки graphics
Управление графической системой
Черчение и заполнение
Манипулирование экраном и графическими окнами
Текстовый вывод в графическом режиме
Borland С++ предусматривает ряд предопределенных глобальных
переменных, которые могут использоваться при работе с датой, временем, аргументами командной строки и т.д.
В данном разделе представлены глобальные переменные Borland
С++, доступные только для 16-разрядных приложений DOS.
Глобальные переменные
Потоковые классы С++
Потоковые классы С++
Класс conbuf (constrea.h)
Класс constream (constrea.h)
Класс filebuf (fstream.h)
Класс fstream (fstream.h)
Класс fstreamable (fstream.h)
Класс ifstream (fstream.h)
Класс ios (iostream.h)
Класс iostream (iostream.h)
Класс istream (iostream.h)
Класс istream_withassign (iostream.h)
Класс istream (strstrea.h)
Класс ofstream (fstream.h)
Класс ostream (iostream.h)
Класс ostream_withassign (iostream.h)
Класс oststream (strstrea.h)
Класс streambuf (iostream.h)
Класс strstreambase (strstrea.h)
Класс strstreambuf (strstrea.h)
Класс strstream (strstrea.h)
Постоянные потоковые классы и макрокоманды
Постоянные потоковые классы и макрокоманды
Класс fpbase (objstm.h)
Класс ifpstream (objstrm.h)
Класс ipstream (objstrm.h)
Класс pstream (objstrm.h)
Класс TStreamableBase (objstrn.h)
Класс TStreamable (streambl.h)
Класс TStreamer (objstrm.h)
Макрокоманда __DELTA (streambl.h)
Макрокоманды, начинающиеся с DECLARE
Макрокоманды, начинающиеся с IMPLEMENT
Контейнерные классы С++ от TMArray... до TIHash...
Контейнерные классы С++
Шаблон TMArrayVector (arrays.h)
Шаблон TMArrayAsVectorIterator (arrays.h)
Шаблон TArrayAsVector (arrays.h)
Шаблон TArrayAsVectorIterator (arrays.h)
Шаблон TMIArrayAsVector (arrays.h)
Шаблон TMIArrayAsVectorIterator (arrays.h)
Шаблон TIArrayAsVector (arrays.h)
Шаблон TIArrayAsVectorItetator (arrays.h)
Шаблон TMSArrayAsVector (arrays.h)
Шаблон TMSArrayAsVectorItetator (arrays.h)
Шаблон TSArrayAsVector (arrays.h)
Шаблон TSArrayAsVectorItetator (arrays.h)
Шаблон TISArrayAsVector (arrays.h)
Шаблон TISArrayAsVectorItetator (arrays.h)
Шаблон TMISArrayAsVector (arrays.h)
Шаблон TMDAssociation (assoc.h)
Шаблон TDDAssociation (assoc.h)
Шаблон TDDAssociation (assoc.h)
Шаблон TDIAssociation (assoc.h)
Шаблон TMIDAssociation (assoc.h)
Шаблон TIDAssociation (assoc.h)
Шаблон TMIIAssociation (assoc.h)
Шаблон TIIAssociation (assoc.h)
Шаблон TMBagAsVector (bags.h)
Ниже описываются инкапсуляция в ObjectWindows 2.0 GDI Windows. ObjectWindows облегчает использование графических объектов
и функций GDI.
Некоторые приложения, такие как графические приложения и задачи обработки изображений, требуют использования графики. Эта
графика может быть в форме линий, форм, текста или побитовых
(растровых) отображений. Для предоставления приложениям функциональных возможностей работы с графикой Windows имеет набор функций, называемых интерфейсом с графическими устройствами (GDI).
GDI может рассматриваться как графический пакет, который используют приложения Windows для представления и манипуляций с графикой. Функции GDI дают вашему приложению возможности рисования, не
зависящие от используемого устройства представления. Например, вы
можете использовать одни и те же функции GDI для написания программ для дисплеев EGA и VGA или для принтера PostScript. Независимость от устройств достигается с помощью использования драйверов устройств, переводящих вызовы функций GDI в команды, понятные
использующемуся устройству вывода.
Следующие подпрограммы позволяют создавать экранные графические представления с текстовой частью.
| arc | (graphics.h) | fillellipse | (graphics.h) |
| bar | (graphics.h) | fillpoly | (graphics.h) |
| bar3d | (graphics.h) | floofill | (graphics.h) |
| circle | (graphics.h) | getarccoords | (graphics.h) |
| cleardevice | (graphics.h) | getaspectratio | (graphics.h) |
| clearviewport | (graphics.h) | getbkcolor | (graphics.h) |
| closgraph | (graphics.h) | getcolor | (graphics.h) |
| detectgraph | (graphics.h) | getdefaultpallette | (graphics.h) |
| drawpoly | (graphics.h) | getdrivername | (graphics.h) |
| ellipse | (graphics.h) | getfillpattern | (graphics.h) |
| getfillsettings | (graphics.h) | outtext | (graphics.h) |
| getgraphmode | (graphics.h) | outtextxy | (graphics.h) |
| getimage | (graphics.h) | pieslice | (graphics.h) |
| getfinesettings | (graphics.h) | pufimage | (graphics.h) |
| getmaxcolor | (graphics.h) | pulpixel | (graphics.h) |
| getmaxmode | (graphics.h) | rectangle | (graphics.h) |
| getmaxx | (graphics.h) | registerbgidriver | (graphics.h) |
| getmaxy | (graphics.h) | registerbgifont | (graphics.h) |
| getmodename | (graphics.h) | restorecrtmode | (graphics.h) |
| getmoderange | (graphics.h) | sector | (graphics.h) |
| getpalette | (graphics.h) | settaffpalette | (graphics.h) |
| getpixel | (graphics.h) | setaspectratio | (graphics.h) |
| gettextsettings | (graphics.h) | setbkcolor | (graphics.h) |
| getviewsettings | (graphics.h) | setcolor | (graphics.h) |
| getx | (graphics.h) | setcursortype | (conio.h) |
| gety | (graphics.h) | setfillpattern | (graphics.h) |
| graphdefaults | (graphics.h) | setfillstyle | (graphics.h) |
| grapherrormsg | (graphics.h) | setgraphbufsize | (graphics.h) |
| _graphfreemem | (graphics.h) | setgraphmode | (graphics.h) |
| _graphgetmem | (graphics.h) | setlinestyle | (graphics.h) |
| graphresult | (graphics.h) | setpalette | (graphics.h) |
| imagesize | (graphics.h) | setrgbpalette | (graphics.h) |
| initgraph | (graphics.h) | settextjunistify | (graphics.h) |
| installuserdriver | (graphics.h) | settexttyle | (graphics.h) |
| installuserfont | (graphics.h) | setusercharsize | (graphics.h) |
| line | (graphics.h) | setviewport | (graphics.h) |
| linerel | (graphics.h) | setvisualpage | (graphics.h) |
| lineto | (graphics.h) | setwritemode | (graphics.h) |
| moverei | (graphics.h) | textheight | (graphics.h) |
| moveto | (graphics.h) | textwidth | (graphics.h) |