ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 17


     Глава 8. Использование графического редактора Paint
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Стр. 181,  Таблица 8.1: Действия "мыши" для команд Zoom In и
Zoom Out зарезервированы.  Для возврата к прежнему размеру дважды
щелкните  кнопкой  "мыши"  на пиктограмме Zoom;  для распахивания
укажите на пи пиктограмму Zoom,  нажмите клавишу Shift  и  дважды
щелкните кнопкой "мыши".

     Стр. 188: Корректным текстом для второго пункта будет следу-
ющий:

     ...затем выберите  из  пиктограммы  или  меню  Bitmap   Edit
Foreground  Color или Edit Background Color (в зависимости от то-
го, какой тип ресурса вы редактируете).

     Стр. 189: В двух местах на данной странице в тексте говорит-
ся "палитра",  а должно быть "устройство". В разделе  "Редактиро-
вание цвета" текст в круглых скобках в  первом  параграфе  должен
выглядеть так:

     (для устройства  с  16 цветами вы можете видеть в этом блоке
некоторое нарушение цвета)

     Примечание на  полях  в  нижней  части страницы ссылается на
256-цветную палитру.  Цвет Granted соответствует цвету  Requested
для 256-цветных (или больше) устройств, а не палитр.

     Стр. 190:  Командная кнопка System разрешена для  устройств,
поддерживающих 256 или более цветов.

                Глава 9. Создание пиктограмм
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Стр. 202,  Рис. 9.4 сопутствующий текст: Диалоговое окно на-
зывается New File Resource.

               Глава 10. Создание макрокоманд
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Стр. 224,  Рис.  10.4 и сопутствующий текст: Диалоговое окно
называется New File Resource.

                 Глава 12. Создание шрифтов
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Стр. 243:  После шага 1 в "Создании нового  ресурса  шрифта"
следует включить параграф:

     Если вы создаете новый проект, то можете выбрать формат .RC,
.RES или .FNT.  Если выбирается .RES или .FNT, пакет разработчика
ресурсов автоматически запускает редактор Paint.  Диалоговое окно
Source/Binary не выводится.

     В шаге 2 выбираемый вами  параметр  называется  FONT,  а  не
.FNT. Кроме того, относительно параметров Source и Binary следует
разъяснить следующее:

     Параметр Source "встраивает" ресурс шрифта в текущий проект.
Шрифт не  существует в виде отдельного файла и не может использо-
ваться в другой проект. Параметр Binary сохраняет ресурс шрифта в
виде отдельного файла (с расширением .FNT), который компонуется с
текущим проектом. Используя команду FileіAdd to Project, вы може-
те компоновать файл .FNT с другими проектами.

     Стр. 244: Инструментальные средства редактора Paint выводят-
ся с правой стороны экрана (аналогичная ошибка на стр. 255).

     Стр. 246: В пояснении параметра Stretch Current Chars следу-
ет указать следующее:

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

     Стр. 252:  В шаге 4 в верхней части страницы командой должна
быть FileіSave  Project или FileіSave File As.  FileіSave Project
перезаписывает текущий проект;  FileіSave File As  создает  новый
файл проекта, позволяя вам сохранять старую версию.

     В разделе  "Сохранение   проекта"   командой   должна   быть
FileіSave Project.

     В разделе  "Сохранения ресурса шрифта в виде файла" форматом
является ResourceіSave Resource As,  а диалоговое окно называется
Save Resource As. Первое предложение раздела следует читать так:

     Сохранение всего проекта сохраняет в проекте все ресурсы,  а
не только ресурс шрифта, с которым вы работаете.

     Стр. 256:  На шаге 3 неточны две ссылки на страницы. Во вто-
ром параграфе должна быть ссылка на стр. 246 (максимальное значе-
ние ширины).  В третьем параграфе корректной будет ссылка на стр.
247.

             Приложение A. Технические замечания
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Стр. 266:  Несовместимости препроцессоров между компилятором
ресурсов Microsoft  (Microsoft  Resource Compiler) и компилятором
пакета разработчика ресурсов при обработке сложной параметризации
#defines теперь нет.

     Однако Microsoft  Resource Compiler и пакет разработчика ре-
сурсов сохраняют несовместимость в следующих областях:

     - интерпретация чисел с предшествующими нулями;

     - директива препроцессора #undef;

     - вставка лексем препроцессором;

     - выражения в идентификаторах ресурсов и типах ресурсов;

     - шестнадцатиричные числа в идентификаторах ресурсов и типах
       ресурсов;

     - сложные выражения константы;

     - дублируемые идентификаторы ресурсов;

     - идентификаторы ресурсов, большие 32767;

     - свободные операторы END;

     - свободные операции в выражениях;

     - пропущенные операции в выражениях;

     - синтаксический анализ оператора CAPTION;

     - макрокоманды в директивах включения;

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

               Числа с предшествующими нулями
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Из-за неоднозначности  в обработке чисел с начальными нулями
в компиляторе ресурсов Microsoft не используйте их  в  выражениях
или идентификаторах препроцессора. Компилятор пакета разработчика
ресурсов однозначно интерпретирует такие числа  как  восьмеричные
числовые  константы (если предшествующий 0 используется как часть
идентификатора или выражения препроцессора).  Компилятор ресурсов
Microsoft интерпретирует числа с предшествующими нулями как вось-
меричные числа,  а те же числа в идентификаторах - как десятичные
числа.

     Например, компилятор ресурсов Microsoft интерпретирует выра-
жение 010+1 как 9 в следующем выражении препроцессора,  но как 11
в идентификаторе таблицы строк.

      #if (9 == 010+1)
          STRINGTABLE
          BEGIN
              010+1, "Bug"
          END
      #endif

               Директива препроцессора #undef
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Пакет разработчика ресурсов имеет ограниченную поддержку ди-
рективы препроцессора #undef.  Вы можете использовать ее только с
директивами #define, на которые не ссылаются ресурсы. Если вы ис-
пользуете #undef с директивой #define, на которую имеется ссылка,
то  при  компиляции файла в пакете разработчика ресурсов получите
фатальную ошибку компилятора .RC.

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

                       Вставка лексем
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

 Шестнадцатиричные числа в идентификаторах и типах ресурсов
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Пакет разработчика  ресурсов  поддерживает шестнадцатиричные
числа в идентификаторах ресурсов; компилятор ресурсов Microsoft -
нет.  Компилятор ресурсов Resource Compiler поддерживает шестнад-
цатиричные числа в идентификаторах ресурсов,  а компилятор ресур-
сов Microsoft - нет.  Например, следующий оператор корректно ком-
пилируется при использовании пакета разработчика ресурсов, но да-
ют ошибку в компиляторе ресурсов Microsoft:

     0x0001  ICON file.ico

     Компилятор ресурсов Microsoft генерирует пиктограмму ресурса
с именем "0x0001". Пакет разработчика ресурсов генерирует пиктог-
рамму ресурса с идентификатором, равным 1.

                 Выражения в идентификаторах
            ресурсов и типах идентификаторов ресурсов
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

     101 + 1000 BITMAP vga.bmp

     Компилятор ресурсов  Microsoft анализирует "101" как иденти-
фикатор ресурса,  "+" - как имя типа ресурса,  а "1000" - как имя
файла, а затем дает ошибку. Пакет разработчика ресурсов корректно
генерирует графическое изображение (ресурс  битового  массива)  с
идентификатором, равным 1101.

                 Сложные выражения-константы
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Пакет разработчика ресурсов поддерживает в любом месте  сце-
нария ресурсов, где допускается число, полные выражения-константы
языка Си. Компилятор ресурсов Microsoft поддерживает только прос-
тые выражения. Например, следующее выражение корректно вычисляет-
ся пакетом  разработчика  ресурсов,  но дает ошибку в компиляторе
ресурсов Microsoft:

     3 * (1 + 2) - 1

     Наиболее общий пример такой несовместимости часто можно  ви-
деть в операторах ICON в шаблонах DIALOG.  Следующий оператор вы-
зывает в пакете разработчика ресурcов (но не в компиляторе ресур-
сов Microsoft) ошибку:

     ICON   3 -1, 10, 10, 0, 0

     Пакет разработчика ресурсов интерпретирует "3 -1" как  выра-
жение,   которое  при  вычислении  дает  2.  Компилятор  ресурсов
Microsoft интерпретирует "3 -1" как два отдельных поля.  Если  вы
после  первого  числа добавите запятую,  то оба компилятора будут
интерпретировать оператор корректно:

     ICON   3, -1, 10, 10, 0, 0

            Дублирование идентификаторов ресурсов
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Чтобы ресурсы были доступны на этапе выполнения,  пакет раз-
работчика  ресурсов  налагает  правило,  чтобы идентификаторы или
имена этого ресурса в каждом типе ресурса были уникальными.  Ком-
пилятор  ресурсов Microsoft этого не делает.  Следующие операторы
приводят к тому,  что пакет разработчика ресурсов выводит сообще-
ние об ошибке:

     1 ICON file1.ico
     1 ICON file2.ico

         Идентификаторы ресурсов, превышающие 32767
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Хотя в документации Microsoft утверждается,  что идентифика-
тором ресурса может быть любое число от 1 до  65535,  фактические
для  обеспечения их уникальности вы должны использовать идентифи-
каторы ресурсов в диапазоне от 1 до 32767. Причина состоит в том,
что программы компоновки ресурсов, такие как RLINK или компилятор
ресурсов Microsoft при построении каталога ресурса в  выполняемом
файле  выполняют  над  всеми идентификаторами ресурса и значением
0x8000 операцию OR, что дает значения от 32768 до 65535.

                   Свободные операторы END
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Пакет разработчика  ресурсов  не  поддерживает операторы END
без соответствующего BEGIN.  Компилятор ресурсов Microsoft допус-
кает такие операторы.  Например, следующий фрагмент сценария даст
в пакете разработчика ресурсов ошибку:

     1 RCDATA
     BEGIN
       0
     END

     END

               Свободные операции в выражениях
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Пакет разработчика ресурсов не допускает "свободных"  опера-
ций в выражениях-константах; компилятор ресурсов Microsoft позво-
ляет их использовать. Например, следующее выражение в пакете раз-
работчика ресурсов отмечается как ошибочное:

     WS_SYSMENU і WS_CAPTION і

     Чтобы исправить ошибку, просто удалите последнюю поразрядную
операцию OR:

     WS_SYSMENU і WS_CAPTION

              Пропущенные операции в выражениях
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Синтаксический анализатор  пакета разработчика ресурсов тре-
бует, чтобы во всех  выражениях  присутствовали  все  необходимые
операции.  Компилятор ресурсов Microsoft предполагает, что пропу-
щенная операция - это поразрядная операция OR.  Например, следую-
щее  выражение в пакете разработчика ресурсов отмечается как оши-
бочное:

     WS_SYSMENU  WS_CAPTION

     Чтобы скорректировать ошибку,  добавьте поразрядную операцию
OR:

     WS_SYSMENU і WS_CAPTION

           Синтаксический анализ оператора CAPTION
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Способ обработки оператора CAPTION в шаблоне DIALOG  зависит
в компиляторе ресурсов Microsoft от порядка; в пакете разработчи-
ка ресурсов это не так.  Различие иллюстрируется следующими фраг-
ментами:

     1 DIALOG 10, 10, 100, 100
     CAPTION "Caption"
     BEGIN
     END

     2 DIALOG 10, 10, 100, 100
     STYLE WS_POPUP
     CAPTION "Caption"
     BEGIN
     END

     3 DIALOG 10, 10, 100, 100
     CAPTION "Caption"
     STYLE WS_POPUP
     BEGIN
     END

     В первом примере явный оператор  STYLE  отсутствует,  и  оба
компилятора  используют  по  умолчанию  WS_POPUP  і  WS_BORDER  і
WS_SYSMENU,  (операция OR с WS_CAPTION).  Стилем  результирующего
шаблона DIALOG будет:

     WS_POPUP і WS_BORDER і WS_SYSMENU і WS_CAPTION

     Во втором  примере  STYLE предшествует оператору CAPTION,  и
оба компилятора применяют Стилем результирующего  шаблона  DIALOG
будет:

     WS_POPUP і WS_CAPTION

     В третьем  примере  оператор  CAPTION предшествует оператору
STYLE.

     Обнаружив явный   оператор   STYLE,   компилятор    ресурсов
Microsoft, очищает все  предшествующие  и  заранее  установленные
стили. Результирующий шаблон DIALOG будет иметь стиль:

     WS_POPUP

     Компилятор пакета разработчика ресурсов выполняет над опера-
торами CAPTION  и  STYLE  операцию OR,  создавая шаблон DIALOG со
стилем:

     WS_CAPTION і WS_POPUP

            Макрокоманды во включаемых директивах
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

     #define MYFILE "afile.h"

     #include MYFILE

                 Поддержка оператора CTLDATA
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Пакет разработчика ресурсов поддерживает использование  опе-
ратора  CTLDATA  со  специализированными управляющими элементами.
Оператор CTLDATA описывается в файле CUSTCNTL.RW.  Компилятор ре-
сурсов Microsoft не поддерживает CTLDATA.

            Символы, допустимые в именах ресурсов
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В пакете разработчика ресурсов для символов в именах  ресур-
сов соблюдаются обычные правила языка Си. Он воспринимает все ал-
фавитно-цифровые символы из набора символов ANSI (включая не  ла-
тинские  символы верхнего регистра типа "В") и подчеркивание.  Не
алфавитно-цифровые символы типа прямой и обратной косой черты или
+ не  поддерживаются.  Имя  ресурса должно начинаться с буквы или
подчеркивания и не может начинаться с числа.

     Компилятор ресурсов Microsoft не ограничивает имена ресурсов
алфавитно-цифровыми символами.

                 Изменения к данному изданию
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В этом разделе описываются изменения, внесенные в данное из-
дание пакета разработчика ресурсов.

                      Параметр Visible
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Стиль диалоговых блоков для кнопок, блоков списка, групповых
блоков, комбинированных блоков, статических управляющих элементов
и текстовых управляющих  элементов  (включая  статический  текст)
имеют кнопку с независимой фиксацией Visible.

     По умолчанию этот параметр установлен (WS_VISIBLE), и управ-
ляющий элемент выводится при  первоначальном  выводе  окна.  Если
данный параметр выключается (NOT WS_VISIBLE), то управляющий эле-
мент не выводится.  В этом случае прикладная программа для вывода
скрытого  управляющего элемента может вызвать на этапе выполнения
функцию ShowWindow.

               Совместимость с версией Windows
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В диалоговом  окне FileіPreferences вы можете задать целевую
версию Windows. Заметим, что файлы .RES and .EXE, предназначенные
для Windows 3.1 не имеют обратной совместимости с Windows 3.0.

     Если файл .RES предназначен для Windows 3.1, то для привязки
ресурсов к прикладной программе вы не можете использовать  версию
RC.EXE  для  Windows  3.0.  Нужно  использовать  инструментальные
средства Borland или версию 3.1 компилятора ресурсов Microsoft.

              Позиционирование диалогового окна
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Для диалоговых   окон,   использующих  стиль  WS_OVERLAPPED,
Windows позволяет вам позиционировать  диалоговое  окно  в  самой
Windows. Диалоговое окно Size Dialog (AlignіSize) содержит кнопку
с зависимой фиксацией Set by Windows, которая выводится в колонке
Horizontal  Size,  когда выбранным управляющим элементом является
рамка диалогового окна.

     Если вы щелкните "мышью" на кнопке Set by Windows,  поле по-
зиционирования по X автоматически становится пустым. Пакет разра-
ботчика ресурсов помещает в поле X значение 0x8000.  (хотя на эк-
ране оно не выводится), которое сообщает Windows, что она ответс-
твенна за позиционирование диалогового окна.

     Данный параметр в общем случае применяется для кадров диало-
говых окон, которые используется в качестве основных окон.

                Новые средства в Windows 3.1
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В данном разделе описываются изменения в пакете разработчика
ресурсов, которые отражают новые средства Windows 3.1.

                    Стили диалоговых окон
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В Windows версии 3.1 к трем диалоговым окнам стилей добавле-
ны следующие параметры (кнопки с независимой фиксацией):

                     Параметр List Box Style

    Scroll bar always   В  блоке  списка  всегда выводится верти-
                        кальная полоса  прокрутки,  независимо от
                        числа содержащихся  в  нем  элементов.  В
                        WINDOWS.H  для  этого стиля имеется конс-
                        танта LBS_DISABLENOSCROL.

                    Параметр Combo Box Style

    Vertical scroll     Комбинированный блок всегда выводит  вер-
    always              тикальную полосу прокрутки, независимо от
                        числа содержащихся  в  нем  элементов.  В
                        WINDOWS.H для этого стиля  имеется  конс-
                        танта CBS_DISABLENOSCROL.

                     Параметр Edit Text Style

    Read only           Данное текстовое окно доступно только для
                        чтения. В WINDOWS.H этому стилю соответс-
                        твует константа ES_READONLY.

    Want return         Многострочный текстовый управляющий  эле-
                        мент воспринимает   для   принудительного
                        разбиения строки символ возврата каретки.
                        Если фокус не находится на  редактируемом
                        текстовом  управляющем элементе,  возврат
                        каретки  поступает  в  Defpushbutton.   В
                        WINDOWS.H этому стилю соответствует конс-
                        танта ES_WANTRETURN.

                     Размеры пиктограмм
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Windows 3.1 поддерживает пиктограммы трех размеров:  32x32 и
32x16 (поддерживаемые также в Windows 3.0),  плюс 64x64. Диалого-
вое окно New Icon Image,  показанное на Рис.  3.14 и 9.5 в "Руко-
водстве пользователя по пакету разработчика ресурсов", не включа-
ет в себя 64x64. При чтении Главы 9 ("Создание пиктограмм") нужно
иметь в виду,  что теперь поддерживается этот новый размер графи-
ческого образа.

                     Информация о версии
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Пакет разработчика  ресурсов  не  поддерживает  VERSIONINFO,
включаемую в файлы .EXE Windows 3.1 информацию о версии.  Подроб-
ное описание VERSIONINFO вы можете найти в справочном файле паке-
та разработчика ресурсов (Help).

                   Требования компоновщика
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

                     Библиотека BWCC.LIB
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Если вы сначала компонуете свою программу с библиотекой  им-
порта BWCC.LIB, а затем с IMPORT.LIB, которые содержатся в подка-
талоге LIB, определяемом программой Install, то важен порядок ис-
пользования этих библиотечных файлов:  файл BWCC.LIB должен пред-
шествовать библиотеке IMPORT.LIB.

                     Библиотека BWCC.DLL
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Необходимо сделать    библиотеку   динамической   компоновки
BWCC.DLL доступной для вашей прикладной программы на этапе выпол-
нения. Для этого ее можно расположить в следующих местах:

     - в том же каталоге, что и файл .EXE прикладной программы;
     - в каталоге запуска Windows или в системном каталоге;
     - в каталоге, заданном в маршруте PATH.

           BWCC и библиотека объектных окон (OWL)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Если вы используете DLL-версию OWL (Object Windows Library),
то требуется явная загрузка библиотеки BWCC.DLL.  Для этого вклю-
чите  в  WinMain перед кодом, вызывающим место запуска прикладной
программы (Application Run) следующее:

     HANDLE hDLL:
       hDLL = LoadLibrary ("BWCC.DLL");

     В конце WinMain вставьте следующую строку кода:

     if (hDLL) FreeLibrary ("BWCC.DLL");

       Специализированные управляющие элементы Borland
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Библиотека специализированных  управляющих элементов Borland
(Borland Windows Custom Controls - BWCC)  содержит  специализиро-
ванный  диалоговый  класс  и набор специализированных управляющих
элементов (командных  кнопок,  кнопок  с  независимой  фиксацией,
групповых  затененных  блоков  и  др.).  BWCC  позволяет улучшить
представление ваших диалоговых окон и оптимизировать их функции.

    Использование специализированного диалогового класса
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Специализированный диалоговый класс BORDLG работает,  как на
визуальном, так и на функциональном уровне.

     - Он улучшает внешний вид вашего диалогового окна,  закраши-
       вая фон кистью,  меняющейся в соответствии с целевым  уст-
       ройством отображения. Для экранов VGA и более высокой раз-
       решающей способности фон представляет собой  тонкую  сетку
       перпендикулярных линий, создавая эффект "рельефности". Для
       VGA и монохромных экранов фон белый.

     - Он оптимизирует отображение диалоговых блоков,  непосредс-
       твенно вызывая специализированные подпрограммы изображения
       управляющих элементов,  а не ожидая, пока управляющие эле-
       менты отобразит Windows.  Это позволяет избежать ненужного
       замедления вывода диалоговых блоков.

     Чтобы использовать диалоговый класс,  введите  в  диалоговом
окне Window Style в качестве класса "bordlg".

   Использование специализированных управляющих элементов
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Специализированные управляющие  элементы  позволяют  создать
визуально привлекательные  диалоговые окна с добавлением трехмер-
ного эффекта.  Для конечного пользователя они работают аналогично
стандартным управляющим  элементам Windows,  хотя включают в себя
некоторые технические улучшения (описанные ниже).

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

Group shade        Тень группы - затененная прямоугольная область
                   (выемка), используемая для группирования  дру-
                   гих управляющих элементов. Отличается от стан-
                   дартного группового блока тем, что дает ощуще-
                   ние глубины.

"Нажимаемая"       Семейство "нажимаемых" командных кнопок с нес-
командная кнопка   колькими визуальными графическими символами  и
Borland            другими возможностями  отображения.  Командные
                   кнопки BWCC крупнее, чем большинство стандарт-
                   ных командных кнопок Windows.

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

Кнопка с           Приподнятая кнопка с зависимой фиксацией (блок
независимой        проверки) с  отметкой  вместо "X".  Существуют
фиксацией          также другие возможности отображения.

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

Горизонтальные/    Горизонтальные и вертикальные линии, создающие
вертикальные       впечатление, что они вырезаны  на  поверхности
бороздки           диалогового окна.  Вы можете преобразовать вы-
                   емки в вертикальные и  горизонтальные  пороги,
                   которые  выглядят  "приподнятыми"  над поверх-
                   ностью диалогового окна.

 Сообщения командной кнопки и кнопки с независимой фиксацией
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     "Нажимаемые" командные кнопки BWCC,  кнопки с зависимой фик-
сацией и кнопки с независимой фиксацией имеют следующие  функцио-
нальные улучшения  по сравнению со стандартными управляющими эле-
ментами Windows:

     - Они включают в себя дополнительный уровень уведомления ро-
       дительского  окна  и  управление перемещением фокуса с по-
       мощью клавиатуры и табуляцией.  Если вы выберите для  типа
       порождающего  диалогового окна управляющего элемента стиль
       Parent Notify (уведомление порождающего окна), то управля-
       ющий  элемент на этапе выполнения посылает следующие сооб-
       щения (в соответствующих ситуациях):

  BBN_SETFOCUS          Указывает   порождающему  окну  командной
                        кнопки или кнопки с независимой/зависимой
                        фиксацией на установки на кнопку фокуса с
                        помощью клавиатуры, либо кнопка с незави-
                        симой фиксацией получила  фокус  посредс-
                        твом действий, отличных от щелчка кнопкой
                        "мыши".

  BBN_SETFOCUSMOUSE     Указывает  порождающему окну, что  на ко-
                        мандную кнопку, кнопку с независимой фик-
                        сацией или кнопку с  зависимой  фиксацией
                        фокус установлен с помощью щелчка кнопкой
                        "мыши".

  BBN_GOTATAB           Указывает  порождающему окну, что при ус-
                        тановленном на командную кнопку, кнопку с
                        независимой фиксацией или кнопку с  зави-
                        симой фиксацией фокусе пользователь нажал
                        клавишу Tab.  Порождающее окно может вме-
                        шаться в нажатие клавиши, возвращая нену-
                        левое значение.

  BBN_GOTABTAB          Указывает  порождающему окну, что при ус-
                        тановленном на командную кнопку, кнопку с
                        независимой фиксацией или кнопку с  зави-
                        симой фиксацией фокусе пользователь нажал
                        клавиши  Shift-Tab  (обратная  табуляция)
                        клавишу Tab.  Порождающее окно может вме-
                        шаться в нажатие клавиш,  возвращая нену-
                        левое значение.

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

          Использование стиля диалоговых окон BWCC
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Для управляющих элементов BWCC существуют четыре типа диало-
говых окон:

     - Стиль командной кнопки Borland.
     - Стиль кнопки с зависимой фиксацией Borland;
     - Стиль кнопки с независимой фиксацией Borland;
     - Стиль тени Borland.

     Каждый из них имеет управляющее  окно  для  ввода  заголовка
Caption и идентификатора управляющего элемента Control ID.  Стиль
диалоговых окон командной кнопки и с кнопки с независимой  фикса-
цией  имеет  параметры  атрибутов  для  Tab Stop (шаг табуляции),
Disabled (запрещенный),  Group (группа) и Border (граница), кото-
рые описываются в "Руководстве пользователя по пакету разработчи-
ка ресурсов", а также описанные выше параметры Visible (видимый),
Parent Notify (уведомление порождающего окна) и Owner Draw (отоб-
ражение владельцем).  Параметром атрибута для теневого стиля диа-
логового блока является Group.

     В следующих четырех разделах описываются средства,  уникаль-
ные для каждого стиля диалогового окна.

       Стиль диалогового окна командной кнопки Borland
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данное диалоговое  окно  позволяет  вам выбрать один из трех
типов кнопки: Pushbutton, Defpushbutton или Bitmap.

     По умолчанию выбирается  параметр  Pushbutton  ("нажимаемая"
командная кнопка). С целью идентификации ее для конечного пользо-
вателя,  как  используемой   по   умолчанию,   командная   кнопка
Defpushbutton  имеет  жирную границу.  Эта кнопка выполняется при
нажатии пользователем клавиши Enter. (Исключением является ситуа-
ция,  когда фокус перемещен на управляющий элемент редактирования
текста,  для которого установлен флаг Want Return. См. выше соот-
ветствующий раздел.)

     Для управляющих элементов типа командных кнопок BWCC предоп-
ределены следующие значения идентификаторов Control ID и образов:

   ID  кнопка      образ
  ДДДДДДДДДДДД     ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    1  OK          зеленая отметка
    2  Cancel      красный Х
    3  Abort       экстренная кнопка
    4  Retry       слот-машина
    5  Ignore      знак ограничения скорости 55 mph
    6  Yes         зеленая отметка
    7  No          красный кружок с косой чертой
  998  Help        синий вопросительный знак
    -  Button      общий текст кнопки - используется следующий
                   доступный Control ID
  ДДДДДДДДДДДД     ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Если вы выбираете параметр Bitmap (графическое  изображение)
то в  образ кнопки можно включить графический образ (на основе ее
идентификатора Control ID).  Чтобы прочесть графическое изображе-
ние, сделайте следующее:

     1. Для добавления в свое диалоговое окно управляющей команд-
        ной кнопки BWCC используйте управляющий  элемент  Button.
        Обратите внимание на ее идентификатор Control ID.

     2. Переключитесь  в  графический  редактор  Paint и создайте
        графический образ (см. "Руководство пользователя по паке-
        ту разработчика ресурсов").

     3. В графическом редакторе Paint,  выберите команду Resource
        іRename.

        Если у вас есть экран с разрешающей способностью VGA  или
        более  высокой,  добавьте  к  идентификатору управляющего
        элемента (Control ID) 1000, и введите это значение в поле
        New  Name.  Для  EGA  или  монохромных экранов добавьте к
        Control ID 2000 и введите это значение в поле  New  Name.
        Выберите OK.

     4. Для возврата в редактор диалогов закройте графический ре-
        дактор Paint. В командной кнопке BWCC выводится графичес-
        кое изображение.

 Стиль диалогового окна кнопки с зависимой фиксацией Borland
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данное диалоговое окно перечисляет два стиля кнопки:

Auto radio button  BWCC и Windows комбинируют подсветку  выделен-
(автоматическая    ного элемента и отмену  выбора  других кнопок.
кнопка с зависи-   Этот параметр используется по умолчанию.
мой фиксацией)

Radio button       Для подсветки выбора кнопки  и  отмены  выбора
(кнопка с зави-    других  функция должна вызывать CheckDlgButton
симой фиксацией)   для посылки сообщения BM_SETCHECK.

Стиль диалогового окна кнопки с независимой фиксацией Borland
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данное диалоговое окно перечисляет два стиля кнопки:

Auto check box     BWCC и Windows комбинируют подcветку  выделен-
(автоматическая    ного элемента  и отмену выбора  других кнопок.
кнопка с незави-   Этот параметр используется по умолчанию.
симой фиксацией)

Check box          Для подсветки выбора кнопки  и  отмены  выбора
(кнопка с неза-    других  функция  должна  вызывать  CheckRadio-
висимой фиксацией) Button для посылки сообщения BM_SETCHECK.

          Стиль теневого диалогового блока Borland
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Этот диалоговый  блок вы можете использовать для конвертиро-
вания вертикального или горизонтального  углубления  (см.  выше).
Выемки в  основном  предназначаются  для использования в качестве
разделителей в фоне диалогового окна;  пороги разделяют  блоки  с
серой тенью.

     Чтобы преобразовать  вертикальную  выемку в вертикальный по-
рог, сделайте следующее:

     1. Для добавления в диалоговое окно  углубления  используйте
        управляющий элемент Vertical Dip.

     2. Расположите выемку и подберите для нее нужный размер.

     3. Для  вывода  диалогового  окна Borland Shade Style дважды
        щелкните на нем кнопкой "мыши".

     4. Щелкните  "мышью"  на  кнопке  с  независимой   фиксацией
        Vertical Bump, затем выберите OK.

     Для преобразования  горизонтальной  выемки  в горизонтальный
порог соблюдайте ту же последовательность шагов,  используя  инс-
трументальное средство Horizontal Dip и кнопку с независимой фик-
сацией Horizontal Bump.

                   Настройка существующих
            прикладных программ на использование BWCC
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Пакет разработчика  ресурсов позволяет вам настроить сущест-
вующие приложения Windows на управляющие элементы в стиле Borland
(объемные кнопки с "рельефным видом" и др.). Этот процесс включа-
ет в себя два шага:

     1. Модифицируйте свой файл WIN.INI для загрузки при  запуске
        Windows  библиотеки  специализированных  элементов  фирмы
        Borland (Borland Windows Custom Control - BWCC).

     2. Для изменения средств пользовательского интерфейса  (типа
        диалоговых окон,  меню, пиктограмм и т.д.) отредактируйте
        приложение в пакете разработчика ресурсов.

     Подробнее эти шаги описываются в следующих двух разделах.

         Загрузка BWCC для разрешения использования
        специализированных управляющих элементов Borland
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Библиотека BWCC, обеспечивающая поддержку специализированных
управляющих элементов  в стиле Borland,  должна загружаться перед
использованием средств BWCC.

     Отредактируйте файл WIN.INI (расположенный в основном  ката-
логе   Windows),   после   чего   Windows  будет  загружать  файл
LOADBWCC.EXE в память при загрузке.  Программа установки помещает
файл  LOADBWCC.EXE  в  каталог  компилятора  языка  (по умолчанию
\BORLANDC\BIN) и добавляет этот каталог в свой маршрут.

     Добавьте файл LOADBWCC.EXE в начало списка файлов в операто-
ре "LOAD=". Например, если оператор LOAD в файле WIN.INI выглядит
следующим образом:

     LOAD=NWPOPUP.EXE

то этот оператор нужно изменить на оператор:

     LOAD=loadbwcc.exe NWPOPUP.EXE

     Файл LOADBWCC.EXE должен указываться в операторе первым. Это
обеспечивает, что BWCC загружается в память перед всеми модифици-
рованными приложениями.

     Если вы редактируете WIN.INI  из  Windows,  для  фактической
загрузки LOADBWCC.EXE нужно сначала перезапустить Windows.

         Пример: настройка существующего приложения
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В данном разделе представлен обзор шагов, выполняемых обычно
для модификации существующего приложения (в данном случае - адми-
нистратора программ Windows).

     Пакет разработчика ресурсов оперирует с проектами, состоящи-
ми из  одного  или  более ресурсов.  Поскольку приложение Windows
содержит набор ресурсов,  вы можете открыть само  приложение  как
проект, а затем модифицировать его ресурс.

            Сохранение резервной копии приложения
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Всегда следует  редактировать  копию  приложения.  Заменяйте
оригинал только после того,  как вы будете удовлетворены коррект-
ной работой модифицированной версии.

     Чтобы создать резервную  копию  PROGMAN.EXE  (администратора
программ), сделайте следующее:

     1. В  основном  окне администратора программ дважды щелкните
        кнопкой "мыши" на пиктограмме DOS Prompt.

     2.  В командной строке DOS перейдите в каталог C:\WINDOWS.

     3. Наберите команду "copy PROGMAN.EXE MYSHELL.EXE" и нажмите
        клавишу Enter.

     4. Вернитесь в Windows, набрав "exit" и нажав клавишу Enter.

                      Открытие проекта
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Чтобы открыть администратор программ в виде проекта в пакете
разработчика ресурсов, сделайте следующее:

     1. Для вывода диалогового окна Open Project выберите команду
        FileіOpen Project.

     2. Выведите список типов, нажав кнопку для вывода спускающе-
        гося  списка  типов файлов File Type.  Выберите из списка
        EXE Application.

     3. Для изменения каталога,  содержащего MYSHELL.EXE, исполь-
        зуйте блок Directories.

     4. Для  загрузки  в виде проекта MYSHELL.EXE дважды щелкните
        кнопкой "мыши" в блоке списка Files.

       Редактирование управляющих элементов приложения
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Теперь, когда  вы загрузили приложение в пакете разработчика
ресурсов,  для настройки приложения можно  использовать  редактор
диалогов, редактор меню, редактор акселераторов, строковый редак-
тор или графический редактор.  Эти редакторы подробно  описаны  в
"Руководстве пользователя по пакету разработчика ресурсов".

     В данном  примере  для  преобразования  одного из диалоговых
блоков администратора программ к использованию BWCC вы можете ис-
пользовать редактор диалогов.

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

                Запуск диалогового редактора
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Загрузив MYSHELL.EXE  как  текущий  проект,  вы увидите окно
проекта Project с заголовком "myshell.exe". Это окно выводит спи-
сок ресурсов,  содержащихся в администраторе программ: меню, нес-
колько диалогов,  несколько таблиц строк, таблицу акселераторов и
несколько пиктограмм.  Вы  можете редактировать любой из этих ре-
сурсов,  дважды щелкнув на нем кнопкой мыши или подсветив  его  и
выбрав команду ResourceіEdit.

     Найдя секцию "Dialog" в списке  ресурсов  и  дважды  щелкнув
"мышью" на "3", выберите диалог номер 3. Редактор диалогов загру-
жает окно New Program Object (которое выводится при выборе  поль-
зователем команды администратора программ FileіNew).

     Когда выводится редактор диалогов, вы можете начать редакти-
рования  диалогового  окна.  Задача,  выполняемая в этом примере,
включает в себя:

     - изменение класса диалогового окна на стиль Borland;
     - изменение размера диалогового окна;
     - углубление и выравнивание управляющих элементов;
     - изменение кнопок с зависимой фиксацией на BWCC;
     - замену командных кнопок кнопками BWCC;
     - выравнивание командной кнопки;
     - сохранение и тестирование редактируемого блока диалога.

              Изменение имени диалогового класса
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Для конвертирования диалогового окна New  Program  Object  в
диалоговое  окно  стиля  Borland  нужно  сначала изменить имя его
класса:

     1. Для вывода диалогового окна Window Style дважды  щелкните
        "мышью" на строке заголовка диалогового окна.

     2. Для перемещения курсора к текстовому управляющему элемен-
        ту Class нажмите клавишу Tab.

     3. Введите в качестве класса Class следующее:

         BorDlg

        Щелкните "мышью" на кнопке OK диалогового окна.

     Диалоговое окно New Program Object имеет  теперь  "рельефный
стиль" BWCC.

   Изменение размера и переупорядочивание диалогового окна
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Теперь измените размер и разметку  диалогового  окна,  чтобы
освободить место для "тени группы" и кнопок BWCC.  (Тень группы -
это углубленная область, помещаемая за двумя кнопками с зависимой
фиксацией, что дает диалоговому окну эффект глубины.)

     1. Выберите диалоговое окно, "щелкнув" мышью на его заголов-
        ке или крае. (Если оно уже выбрано, пропустите этот шаг.)

     2.  Отбуксируйте границу вниз на величину около двух дюймов.

     3. Отмените выбор рамки диалогового  окна,  щелкнув  "мышью"
        где-либо в пустой области диалогового редактора вне само-
        го диалогового блока.  (При отмене выбора в других местах
        используйте тот же метод.)

     4. Нажмите  клавишу  Shift  и  одновременно щелкните кнопкой
        "мыши" на каждой из  командных  кнопок  диалогового  окна
        (OK, Cancel и Help). Они будут выбраны. Удалите их, нажав
        клавишу Del.  (Кнопки  BWCC  крупнее  стандартных  кнопок
        Windows. На следующих шагах вы замените кнопки.)

     5. Выберите  группу  "New" и нажмите для ее удаления клавишу
        Del. Потом она будет заменена.

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

     1. Выберите кнопку с зависимой фиксацией "Program Group".

     2. Отбуксируйте правый край ее выделенной рамки влево,  пока
        она не закроет текст.

     3. Нажмите клавишу Shift  и  одновременно  щелкните  кнопкой
        "мыши" для выделения других кнопок с зависимой фиксацией.
        Теперь должны быть выбраны обе кнопки.

     4. Выберите команду AlignіSize и Horizontal SizeіShrink  для
        установки   параметра   Smallest  диалогового  окна  Size
        Controls.

     5. При двух выбранных кнопках (их фон теперь имеет один раз-
        мер)  щелкните "мышью" на Horizontal Center (горизонталь-
        ное центрирование)  в  инструментальном  средстве  Dialog
        (третье слева в верхней строке инструментальных средств).

     6. Чтобы освободить место для "новой" текстовой строки, наж-
        мите несколько раз клавишу стрелки вниз (для  перемещения
        кнопок с зависимой фиксацией вниз).  Когда кнопки с зави-
        симой фиксацией будут там, где требуется, нажмите клавишу
        Enter.

                   Добавление тени группы
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Чтобы управляющие элементы выглядели углубленными,  добавьте
тень группы:

     1. Щелкните "мышью" на инструментальном средстве тени группы
        (в верхнем правом углу палитры инструментальных средств).

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

     3. Буксируйте нижний правый угол теневого группового  блока,
        пока он не окружит кнопки с зависимой фиксацией. Сделайте
        его достаточно большим,  чтобы кнопки не выглядели "напи-
        ханными" в него.

     4. Для  центрирования тени группы в диалоговом окне щелкните
        "мышью" на Horizontal Center в инструментальных средствах
        Dialog  (третий элемент слева в верхней строке инструмен-
        тальных средств Alignment).

                 Добавление текстовой строки
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Чтобы добавить  над  теневым  блоком группы текстовую строку
"New":

     1. Щелкните "мышью" на инструментальном средстве статическо-
        го текста (большая группа T в третьем столбца слева в па-
        литре инструментальных средств).

     2. Переместите крестовидный указатель в точку непосредствен-
        но над верхним левом углом теневого группового блока. Для
        размещения статического текста щелкните "мышью".

     3. Отбуксируйте правый край рамки статического текста  впра-
        во,  пока  он не станет достаточно широким (как групповой
        теневой блок).

     4. Дважды щелкните "мышью" на статическом тексте для  вывода
        диалогового окна Static Style.

     5. Наберите в качестве заголовка Caption " New" (с предшест-
        вующим  пробелом) и щелкните кнопкой OK для закрытия диа-
        логового окна.

     6. При  выбранном статическом тексте нажмите клавишу Shift и
        одновременно щелкните "мышью" на групповом теневом блоке.

     7. В диалоговом окне Size  Control  выберите  команды  Align
        іSize, затем Grow to Largest.

     8. Отмените весь выбор, щелкнув "мышью" в пустой рабочей об-
        ласти вне рамки диалогового  окна.  Теперь  из-за  белого
        края  с правой стороны тени группы статический текст выг-
        лядит несколько длиннее тени группы.

     9. Для выбора статического текста щелкните кнопкой "мыши".

    10. Отбуксируйте его правый край на один элемент сетки  впра-
        во.  (Вы  увидите,  как рамка выбора "притянется" к новой
        позиции.

    11. Здесь, если необходимо, чтобы оставить только одну темную
        линию  между статической тенью и тенью группы,  вы можете
        также отбуксировать статический текст вниз немного  ближе
        к тени группы.

     Если вам нужно проверить его позицию,  отмените выбор стати-
ческого текста.

         Преобразование кнопок с зависимой фиксацией
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Чтобы конвертировать  к  BWCC  кнопку  с зависимой фиксацией
"Program Group".

     1. Нажмите клавишу Ctrl и одновременно  дважды  щелкните  на
        кнопке с  зависимой  фиксацией кнопкой "мыши".  Выводится
        диалоговое окно Generic Control Style.

     2. Измените класс Class  с  "BUTTON"  на  "BorRadio",  затем
        щелкните "мышью" на OK.  Кавычки обязательны,  но регистр
        букв значения не имеют.

     Для кнопки с зависимой фиксацией  "Program  Item"  повторите
эти шаги.

              Добавление горизонтальной выемки
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В диалоговых окнах Borland горизонтальная выемка использует-
ся для отделения кнопок выхода (OK, Cancel и других) от остальных
управляющих элементов (см.  выше).  Чтобы добавить горизонтальное
углубление, сделайте следующее:

     1. Щелкните  "мышью" на инструментальном средстве Horizontal
        Dip (второй элемент сверху в столбце BWCC в палитре  инс-
        трументальных средств).

     2. Щелкните  кнопкой "мыши",  переместив крестовидный курсор
        на левый край рамки диалогового окна,  примерно  на  чет-
        верть дюйма ниже теневого блока группы.  Заметим, что го-
        ризонтальное углубление не занимает полной ширины  диало-
        гового окна.

     3. Выберите команду AlignіSize, затем в параметре Dialog вы-
        берите Horizontal SizeіWidth.

                   Замена командных кнопок
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Для замены  командных  кнопок  диалогового окна на командные
кнопки BWCC сделайте следующее:

     1. Выберите инструментальное средство BWCC Button (в середи-
        не четвертого столбца палитры инструментальных средств).

     2. Переместите крестовидный курсор в ту точку, где вы хотите
        разместить верхний левый угол первого столбца (кнопка OK)
        и щелкните "мышью". Для всех новых командных кнопок будет
        просто указываться "Button".

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

     3. Переместите "мышь" вправо,  расположите стрелку указателя
        в той точке,  где вы хотите поместить верхний левый  угол
        второй кнопки (Cancel), и щелкните правой кнопкой "мыши".
        Сделав это,  вы сдублируете большинство последних  добав-
        ленных  управляющих  элементов  (в данном случае,  первую
        кнопку).

     4. Чтобы поместить третью кнопку (Help),  повторите  шаг  3.
        Когда  вы  это сделаете,  следует добавить горизонтальную
        строку из трех кнопок.  О высоте строки  беспокоиться  не
        следует.

     Чтобы конвертировать  первую  кнопку к виду кнопки OK BWCC с
зеленой отметкой, сделайте следующее:
     1. Для вывода диалогового окна Borland Button  Style  дважды
        щелкните "мышью" на левой командной кнопке.

     2. В  поле  Control ID наберите следующее (буквами в верхнем
        регистре):

             IDOK

        В качестве идентификатора управляющего элемента Control ID
        вы можете также ввести 1.

     3. В  качестве  Button Type,  чтобы OK стала используемой по
         умолчанию кнопкой, выберите Defpushbutton.

     4. В Attributes щелкните "мышью" на группе кнопок с  незави-
        симой фиксацией. (Кнопка теперь должна быть установлена в
        и в Tab Stop, и в Group.)

     5. Для изменения вида кнопки OK  в  стиль  Borland  щелкните
        "мышью" на OK.

     Чтобы конвертировать вторую командную кнопку в кнопку Cancel
BWCC с красной отметкой X сделайте следующее:

     1. Для вывода диалогового окна Borland Button  Style  дважды
        щелкните "мышью" на второй командной кнопке.

     2. В  поле  Control ID наберите следующее (буквами в верхнем
        регистре):

             IDCANCEL

        В качестве  идентификатора  управляющего элемента Control
        ID вы можете также ввести 2.

     3. В Attributes щелкните "мышью" на группе кнопок с  незави-
        симой фиксацией. (Кнопка теперь должна быть установлена в
        и в Tab Stop, и в Group.)

     4. Для изменения вида кнопки Cancel в стиль Borland щелкните
        "мышью" на OK.

     Чтобы модицифировать последнюю кнопку (Help),  сделайте сле-
дующее:

     1. Для вывода диалогового окна Borland Button  Style  дважды
        щелкните "мышью" на последней командной кнопке.

        В поле Caption наберите следующее:

          &Help

        (& подчеркивает  "H," так что пользователь может вызвать
        Help, нажав клавиши Alt-H).

     2. Переместитесь с помощью клавиши Tab к Control ID и введи-
        те "126". (Это было первоначальным идентификатором управ-
        ляющего элемента и требуется для возможности пользователю
        успешно обращаться к Help.)

     3. В Attributes щелкните "мышью" на группе кнопок с  незави-
        симой фиксацией. (Кнопка теперь должна быть установлена в
        и в Tab Stop, и в Group.)

     4. Для выхода из диалогового окна щелкните "мышью" на OK.

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

     Чтобы использовать команды меню Align:

     1. Выберите AlignіAlign для вывода  диалогового  окна  Align
        Controls.  Выберите  команду Vertical AlignmentіCenters и
        щелкните "мышью" на OK. Эта команда выравнивает командные
        кнопки на одной строке.

     2. Для  вывода  диалогового  окна Form Control Into an Array
        (Сформировать управляющие  элементы  в  массив)  выберите
        AlignіArray.   Установите  Rows  (строки)  в  1,  Columns
        (столбцы) в 3,  а Order (порядок) в "Left to right" (сле-
        ва-направо).  Щелкните "мышью" на OK. Эта команда распре-
        деляет кнопки относительно друг-друга.

     3. Если в нижней части диалогового окна слишком много места,
        то можно отбуксировать командные кнопки поближе  к  серой
        тени  блока  и отбуксировать нижний край диалогового окна
        вверх.

     4. Снова  выберите команду AlignіAlign.  Выберите Horizontal
        AlignmentіCenter  в  параметре  Dialog,  затем   щелкните
        "мышью" на OK. Данная команда центрирует командные кнопки
        в диалоговом окне горизонтально.

     Чтобы использовать инструментальные  средства  выравнивания,
сделайте следующее:

     1. Щелкните "мышью"  на  инструментальном  средстве Vertical
        AlignmentіCenters (вертикальная двунаправленная стрелка -
        второй элемент слева в нижней строке). Это инструменталь-
        ное средство вырванивает командные кнопки в одну строку.

     2. Щелкните  "мышью" на инструментальном средстве дублирова-
        ние Duplicate (в левом столбце  палитры  инструментальных
        средств это второй элемент снизу). В диалоговом окне Form
        Control  Into  установите  Rows  (строки)  в  1,  Columns
        (столбцы) в 3,  а Order (порядок) в "Left to right" (сле-
        ва-направо).  Щелкните "мышью" на OK. Эта команда распре-
        деляет кнопки относительно друг-друга.

     3. Если в нижней части диалогового окна слишком много места,
        то можно отбуксировать командные кнопки поближе  к  серой
        тени  блока  и отбуксировать нижний край диалогового окна
        вверх.

     4. В  инструментальном  средстве Dialog (горизонтальная дву-
        направленная стрелка с линиями на концах - третий элемент
        слева в  верхней  строке)  щелкните  "мышью"  на  команде
        Horizontal  AlignmentіCenter.  Эта команда центрирует ко-
        мандные кнопки в диалоговом окне по горизонтали.

              Сохранение и тестирование проекта
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Итак, вы завершили модификацию диалогового окна New  Program
Object администратора программ.  Чтобы сохранить результаты рабо-
ты, выберите команду FileіSave Project.

     Чтобы проверить модифицированное диалоговое  окно  в  пакете
разработчика  ресурсов,  выберите команду OptionsіTest Dialog или
щелкните "мышью" на инструментальном средстве тестирования.

     Вы можете также запустить программу MYSHELL.EXE из Windows и
посмотреть,  как  выглядит новое диалоговое окно в администраторе
программ.  Выберите команду FileіRun,  затем установите командную
строку в "C:\WINDOWS\MYSHELL.EXE" (или укажите маршрут к каталогу
Windows,  если он не находится на диске C). В этом случае вы фак-
тически выполняете вторую "копию" администратора программ.  Когда
закончите,  для возврата к начальной "копии" администратора прог-
рамм выберите команду FileіExit Windows.

           Рекомендации по редактированию ресурсов
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

                        Акселераторы
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

                   Графические изображения
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

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

                           Курсоры
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

     Не добавляйте новых курсоров. В большинстве случаев приложе-
ние не сможет их использовать.

                       Диалоговые окна
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Вы можете изменить позиции элементов диалоговых окон и  пре-
образовать элементы в соответствующие элементы Borland.

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

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

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

                         Пиктограммы
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

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

                            Меню
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В большинстве приложений вы можете безопасно перемещать  ко-
манды в меню. Однако не следует перемещать команды из одного меню
в другое (например,  не перемещайте команду Open из меню  File  в
меню Edit).  Если вы это сделаете, то может оказаться, что прило-
жение не может  вывести  контекстно-зависимую  справку  или  выб-
рать/отменить выбор команды меню.

     Никогда не  изменяйте порядка меню в строке меню.  Например,
если File является первым пунктом меню, не делайте его вторым.

                      Строковые таблицы
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

     Никогда не добавляйте новые строки.  Приложение не сможет их
использовать.

            Инструментальные средства, работающие
    в режиме командной строки: RLINK.EXE, BRCC.EXE и BRC.EXE
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данное издание  пакета разработчика ресурсов включает в себя
три новых ориентированных на ресурсы  инструментальных  средства,
работающих  в  режиме  командной  строки:  RLINK.EXE,  BRCC.EXE и
BRC.EXE.

                          RLINK.EXE
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     RLINK -  это компоновщик ресурсов Windows.  В качестве ввода
он воспринимает один или более объектов ресурсов  (.RES)  и  один
выполняемый файл Windows. Он компонует ресурсы путем корректиров-
ки строковых таблиц, пиктограмм и курсоров, а затем связывает эти
скомпонованные ресурсы с выполняемым модулем.  Наконец, с помощью
построения секции предварительной загрузки для загрузчика Windows
он пытается ускорить выполнение вашей прикладной программы.

     RLINK использует следующий синтаксис командной строки:

    rlink [параметры] <имя_файла>.RES  <имя_файла>.EXE

     RLINK воспринимает следующие параметры:

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
@<имя_файла>     Считывает  инструкции  из  заданного  командного
                 файла.

-d               Удаляет ресурс из файла  .EXE  (файл .RES не за-
                 дается).

-e               Перемещает  используемую  по умолчанию DLL в па-
                 мять EMS.

-fe<имя_файла>   Переименовывает выходной файл .EXE.

-fi<имя_файла>   Задает дополнительные входные файлы .RES.

-k               Запрещает  непрерывную  предзагрузку сегментов и
                 ресурсов в файле .EXE.  Сегменты хранятся в  том
                 порядке, в котором они следуют в файле .DEF.

-l               Компилирует приложение, использующее LIM 3.2 EMS.

-m               Когда Windows выполняется  с  LIM 4.0,  вызывает
                 назначение для каждого экземпляра приложения от-
                 дельного   банка   EMS   bank   (флаг   Multiple
                 Instance).

-p               Создает частную  DLL  (вызываемую  только  одним
                 приложением),  оптимизирует использование памяти
                 в Windows.

-t               Создает приложение, работающее  только  в  защи-
                 щенном режиме  (стандартный  режим  Windows  или
                 улучшенный режим 386).

-v               Печатает сообщения  о ходе выполнения (расширен-
                 ный листинг).

-vx              Перечисляет ресурсы, но не  связывает  их с фай-
                 лом .exe.

-30              Помечает прикладную программу, как предназначен-
                 ную для  Windows 3.0 (или старше).  Используется
                 по умолчанию.

-31              Помечает прикладную программу, как предназначен-
                 ную для Windows 3.1 (или старше).
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                           Примеры
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В следующем примере файл .EXE помечается,  как предназначен-
ный для  иcпользуемой по умолчанию версии (3.0),  и создается об-
ласть предзагрузки.

     rlink <имя_файла>.EXE

     Чтобы пометить  файл  .EXE,  как предназначенный для Windows
3.1, параметр следует указать явно:

     rlink -31 <имя_файла>.EXE

     В следующем примере с файлом .EXE связывается ресурс в файле
.RES, и создается область предзагрузки.

     rlink <имя_файла>.RES <имя_файла>.EXE

     В приведенном ниже примере с файлом .EXE связываются ресурсы
в двух файлах .RES, и создается область предзагрузки:

     rlink -fi<имя_файла>.RES <имя_файла>.RES <имя_файла>.EXE

     Следующий пример комбинирует код программы во входном  файле
.EXE с  ресурсами  во  входном файле .RES и создает выходной файл
.EXE с новым именем, а также область предзагрузки:

     rlink -fe<имя_файла>.exe <имя_файла>.RES <имя_файла>.EXE

     В последнем примере ввод  считывается  из  командного  файла
.RLK. Затем выполняется компоновка с ресурсами в файлах .RES, ко-
торые связываются с файлом EXE, и создается область предзагрузки:

     rlink @<имя_файла>.rlk

     Командный файл (<имя_файла>.RLK) содержит:

     -fi<имя_файла>.res
     -fi<имя_файла>.res
     <имя_файла>.res
     <имя_файла>.exe

                     Компилятор BRCC.EXE
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     BRCC - это версия компилятора ресурсов  пакета  разработчика
ресурсов, работающая в режиме командной строки.  В качестве ввода
она воспринимает файл сценария ресурса (.RC) и создает  объектный
файл (.RES).  BRCC использует следующий синтаксис командной стро-
ки:

     brcc [switches] <имя_файла>.RC

     BRCC воспринимает следующие параметры:

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
-d<имя>[=<строка>]   Определяет идентификатор препроцессора.

-fo<имя_файла>       Переименовывает выходной файл .RES. (По умо-
                     лчанию BRCC создает выходной файл .RES с тем
                     же именем, что и входной файл .RC).

-i<маршрут>          Добавляет к  маршруту  поиска входных файлов
                     один или более каталогов (разделенных точкой
                     с запятой).

-r                   Данный параметр игнорируется. Он включен для
                     совместимости с другими компиляторами ресур-
                     сов.

-v                   Выводит сообщения о ходе работы (расширенный
                     вывод сообщений)

-x                   Удаляет   текущий  маршрут поиска включаемых
                     файлов.

-30                  Создает  файлы  .RES,  совместимые с Windows
                     3.0.

-31                  Создает  файлы  .RES,  совместимые с Windows
                     3.1.

-? или -h            Выводит справочную информацию о параметрах.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Как и пакет разработчика ресурсов,  компилятор ресурсов BRCC
предопределяет  общие относящиеся к ресурсу константы Windows как
WS_VISIBLE и BS_PUSHBUTTON.  Кроме того, определены два специаль-
ных относящихся  к  компилятору  идентификатора  -  RC_INVOKED  и
WORKSHOP_INVOKED.  Эти идентификаторы можно использовать в исход-
ном тексте в сочетании с условными операторами препроцессора  для
управления компиляцией.  Например,  следующая конструкция сущест-
венно увеличивает скорость компиляции:

     #ifndef WORKSHOP_INVOKED
     #include "windows.h"
     #endif

                           Примеры
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В следующем примере к маршруту включаемых файлов добавляется
два каталога, и создается файл .RES с тем же именем, что и исход-
ный файл .RC:

     brcc -i<каталог1>;<каталог2> <имя_файла>.RC

     Следующий пример позволяет вам создавать выходные файлы .RES
с именем, отличным от имени входного файла .RC:

     brcc -fo<имя_файла>.RES <имя_файла>.RC

                     Компилятор BRC.EXE
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Компилятор ресурсов Borland (BRC) - это оболочка компилятора
ресурсов с высокой степенью совместимости с другими компиляторами
ресурсов.  Он воспринимает командные строки в формате этих компи-
ляторов ресурсов и в зависимости от синтаксиса  командной  строки
вызывает BRCC или RLINK.  BRC имеет следующий синтаксис командной
строки:

     brc [параметры] <имя_файла>.RC [<имя_файла>.EXE]

     BRC воспринимает следующие параметры:

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
-d               Определяет идентификатор, который вы можете про-
                 верить с помощью директивы препроцессора #ifdef.

-fo<имя_файла>   Переименовывает файл .RES.

-fe<имя_файла>   Переименовывает файл .EXE.

-fi<имя_файла>   Задает дополнительные входные файлы .RES.

-i<маршрут>      Добавляет один или более каталогов (разделенных
                 точкой с запятой) к маршруту включаемых файлов.

-r               Создает  только  файла  .RES.  Скомпилированный
                 файл .RES не добавляется к файлу .EXE.

-v               Печатает сообщения о ходе выполнения (расширен-
                 ный листинг).

-x               Указывает компилятору, что  при поиске включае-
                 мых файлов  или  файлов ресурсов нужно игнориро-
                 вать переменную операционной среды INCLUDE.

-z               Пропускает проверки на операторы RCINCLUDE.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     При указании параметра -r следующие параметры недопустимы:

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
-e               Перемещает  используемую  по умолчанию DLL в па-
                 мять EMS.

-k               Запрещает  непрерывную  предзагрузку сегментов и
                 ресурсов в файле .EXE.  Сегменты хранятся в  том
                 порядке, в котором они следуют в файле .DEF.

-l               Компилирует приложение, использующее LIM 3.2 EMS.

-m               Когда Windows выполняется  с  LIM 4.0,  вызывает
                 назначение для каждого экземпляра приложения от-
                 дельного   банка   EMS   bank   (флаг   Multiple
                 Instance).

-p               Создает частную  DLL  (вызываемую  только  одним
                 приложением),  оптимизирует использование памяти
                 в Windows.

-t               Создает приложение, работающее  только  в  защи-
                 щенном режиме  (стандартный  режим  Windows  или
                 улучшенный режим 386).

-30              Помечает прикладную программу, как предназначен-
                 ную для  Windows 3.0 (или старше).  Используется
                 по умолчанию.

-31              Помечает прикладную программу, как предназначен-
                 ную для Windows 3.1 (или старше).
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                           Примеры
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В зависимости от вашей задачи, существует несколько вариаций
базового синтаксиса командной строки BRC.

     Следующий оператор компилирует файл .RC, создает файл .RES и
добавляет файл .RES к выполняемому файлу.

     brc <имя_файла>.RC [<имя_файла>.EXE]

     BRC автоматически ищет файл .EXE с тем же именем, что и файл
.RC. Вам  нужно задавать файл .EXE только если его имя отличается
от имени файла .RC.

     В следующем примере создается файл .RES,  но не  файл  .EXE.
Если вы укажете имя файла .EXE в командной строке,  BRC его игно-
рирует.

     brc -r <имя_файла>.RC

     В следующем примере компилируется версия Windows  3.1  файла
DLL.  Вы  должны  указать в командной строке расширение файла DLL
(.DLL, .DRV или .EXE).

     brc -31 <имя_файла>.DLL

     В приведенном ниже примере к выполняемому файлу  добавляется
существующий  файл  .RES.  Имя  файла .EXE требуется только в том
случае, если оно отличается от имени файла .RES.

     brc <имя_файла>.RES [<имя_файла>.EXE]

  СОЗДАНИЕ КЛАССОВ СПЕЦИАЛИЗИРОВАННЫХ УПРАВЛЯЮЩИХ ЭЛЕМЕНТОВ
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

     Описание стандартных управляющих элементов меню а также заг-
рузки и использования библиотеки  специализированных  управляющих
элементов вы  можете найти в Главе 4 "Руководства пользователя по
пакету разработчика ресурсов").

     Свои специализированные управляющие элементы вы должны запи-
сать в файл библиотеки динамической компоновки (DLL). Примеры ис-
пользования описываемых ниже интерфейсных специализированных  уп-
равляющих  элементов  в прикладной программе и создания файла DLL
можно найти в демонстрационной программе BITBTN на дистрибутивных
дисках пакета разработчика ресурсов Resource Workshop. Эти приме-
ры поставляются для Паскаля и Си.

     Файл DLL должен содержать функции, позволяющие пакету разра-
ботчика ресурсов работать со стандартными специализированными уп-
равляющими элементами Windows. В частности, вы должны реализовать
функцию ListClasses и экспортировать ее по имени.  Данная функция
обеспечивает для пакета разработчика ресурсов информацию о  клас-
сах специализированных  управляющих элементов в DLL.  Для каждого
специализированного класса управляющих элементов окна  вы  должны
также определить следующие функции:

     - Info
     - Style
     - Flags

     Эти функции могут иметь любые имена, однако, они должны экс-
портироваться DLL, а указатели на них должны передавать в функции
ListClasses.  Приведенный  ниже  материал  разбит на два раздела,
первый из которых предназначен для программистов,  работающих  на
языке Си, а второй - для тех, кто работает на Паскале.

              Для тех, кто работает на языке Си
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                       Функция ListClasses
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     ListClasses - это реализуемая программистом функция, которая
передает информацию о классах специализированных управляющих эле-
ментов обратно пакету разработчика ресурсов.  Экспорт ListClasses
отмечает вашу DLL, как поддерживающую данную спецификацию специа-
лизированных управляющих элементов.

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

     Функция ListClasses должна возвращать  описатель  глобальной
памяти, выделенный  функцией GlobalAlloc.  Память,  адресуемая по
этому описателю,  содержит структуру типа  CTLCLASSLIST,  которая
описывает содержащиеся  в библиотеке специализированные управляю-
щие элементы. Структура CTLCLASSLIST описывается далее. Описатель
освобождается пакетом  разработчика ресурсов и не должен освобож-
даться DLL.

     Возвращаемое значение:

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

     Синтаксис:

     HGLOBAL CALLBACK ListClasses( LPSTR szAppClass,
          UINT wVersion, LPFNLOADRES fnLoad, LPFNEDITRES fnEdit);

     Параметры:

     szAppClass    Имя класса  основного окна вызывающей приклад-
                   ной программы.  Это имя класса может использо-
                   ваться  специализированным управляющим элемен-
                   тов для определения того,  выполняется  ли  он
                   редактором  ресурсов.  Если  szAppClass  равно
                   "rwswnd",  то вызывающей прикладной программой
                   является пакет разработчика ресурсов.

     wVersion      Номер  версии вызывающей прикладной программы.
                   Основной номер  версии  содержится  в  старшем
                   байте, а дополнительный - в младшем. Например,
                   версия 1.02 - это 0x0102.

                        Функция Info
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Функция Info вызывается пакетом  разработчика  ресурсов  для
получения информации  о  классе  управляющего  элемента,  включая
строку, добавляемую в  управляющий  элемент-меню,  и  графическое
изображение, добавляемое   в  палитру  инструментальных  средств.
Функция возвращает описатель памяти, которую можно распределить с
помощью функции  GlobalAlloc.  Этот описатель должен ссылаться на
память, содержащую  структуру   RWCTLINFO.   Аналогично   функции
ListClasses,  возвращаемый  Info  описатель освобождается пакетом
разработчика ресурсов и не должен освобождаться DLL. Данная функ-
ция вызывается пакетом разработчика ресурсов перед загрузкой DLL.

     Синтаксис:

     HGLOBAL CALLBACK Info( void);

     Параметры:

     Нет.

     Структура:

     Структура RWCTLINFO, определенная с помощью спецификации ти-
па typedef в файле CUSTCNTL.H, имеет две основные части:

     - Первая часть имеет фиксированную длину и обеспечивает  ин-
       формацию о классе управляющего элемента в целом.

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

     /* общие определения размера */
     #define     CTLTYPES   12   /* число типов управляющих
                                    элементов */
     #define     CTLDESCR   22   /* размер имени управляющего
                                    меню */
     #define     CTLCLASS   20   /* максимальный размер имени
                                    класса */
     #define     CTLTITLE   94   /* максимальный размер текста
                                    управляющего элемента */

      typedef struct {
        UINT         wVersion;            /* версия элемента */
        UINT         wCtlTypes;           /* типы элемента */
        char         szClass[CTLCLASS];   /* имя класса
                                       управляющего элемента */
        char         szTitle[CTLTITLE];   /* заголовок */
        char         szReserved[10];    // зарезервировано
        RWCTLTYPE    Type[CTLTYPES];      /* список типов */
      } RWCTLINFO;

      typedef RWCTLINFO *RWPCTLINFO;
      typedef RWCTLINFO FAR *LPRWCTLINFO;

     wVersion       Номер  версии  библиотеки  специализированных
                    управляющих элементов.  Основной номер версии
                    содержится в старшем байте,  а дополнительный
                    - в младшем.  Например,  версия  1.02  -  это
                    0x0102. Это поле в пакете разработчика ресур-
                    сов не используется.

     wCtlTypes      Число подтипов управляющих элементов, опреде-
                    ленных в массиве Type.

     szClass        Имя класса,  зарегистрированного  в  Windows.
                    Оно дублируется из структуры  CTLCLASSLIST  и
                    сохраняет совместимость снизу-вверх со специ-
                    фикацией специализированных управляющих  эле-
                    ментов Windows.

     szReserved     Место, зарезервированное для будущего исполь-
                    зования. Должно очищаться путем записи  нуле-
                    вых символов (0).

     Type           Массив   структур   описания   подтипов  типа
                    RWCTLTYPE.

     /*
      * RWCTLTYPE DATA STRUCTURE
      *
      * Эта структура данных возвращается функцией параметров уп-
      * равляющего  элемента,  которая  запрашивает   возможности
      * конкретного  управляющего  элемента.  Каждый  управляющий
      * элемент может содержать под одним общим классом различные
      * типы (с предопределенными битами стиля).
      *
      * Поле ширины и высоты обеспечивают для прикладной програм-
      * мы информацию о предлагаемом размере.  В значениях данных
      * полей  используются элементы изображения или диагональные
      * единицы.  Если вы используете элементы изображения, уста-
      * новите старший бит. Если используются диагональные едини-
      * цы, сбросьте его.
      *
      */

      typedef struct {
        UINT         wType;               /* тип стиля */
        UINT         wWidth;              /* ширина */
        UINT         wHeight;             /* высота */
        DWORD        dwStyle;             /* стиль по умолчанию */
        char         szDescr[CTLDESCR];   /* имя меню */
        HBITMAP      hToolBit;            // бит. масс. Toolbox
        HCURSOR      hDropCurs;           // курсор буксировки
      } RWCTLTYPE, FAR * LPRWCTLTYPE;

     wType          Определяемое пользователем значение,  исполь-
                    зуемое для указания подтипа управляющего эле-
                    мента.  Это значение не используется в пакете
                    разработчика ресурсов.

     wWidth         Используемая  по  умолчанию  ширина управляю-
                    щего элемента.  Пакет  разработчика  ресурсов
                    будет использовать это значение, если, напри-
                    мер, управляющий элемент создается путем бук-
                    сировки пиктограммы из палитры инструменталь-
                    ных средств.  Если  установлен  старший  бит,
                    wWidth  - это координаты диалога (в этом слу-
                    чае значение задается в  элементах  изображе-
                    ния). Например, значение "32" - это 32 в диа-
                    гональных  координатах,  но  значение  "32  і
                    0x8000" задается в элементах изображения.

     wHeight        Используемая  по  умолчанию  высота управляю-
                    щего элемента.  Пакет  разработчика  ресурсов
                    будет использовать это значение, если, напри-
                    мер, управляющий элемент создается путем бук-
                    сировки пиктограммы из палитры инструменталь-
                    ных средств.  Если  установлен  старший  бит,
                    wHeight - это координаты диалога (в этом слу-
                    чае значение задается в  элементах  изображе-
                    ния). Например, значение "32" - это 32 в диа-
                    гональных  координатах,  но  значение  "32  і
                    0x8000" задается в элементах изображения.

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

     szDescr        Описание подтипа  управляющей структуры. Дан-
                    ный текст используется  пакетом  разработчика
                    ресурсов для построения элемента меню,  кото-
                    рый пользователь может использовать для  соз-
                    дания  экземпляра  вашего специализированного
                    управляющего элемента.

     hToolBit       Описатель графического  изображения,  которое
                    будет помещено   в  палитру  инструментальных
                    средств. Пакет разработчика ресурсов требует,
                    чтобы  графическое  изображение было черным и
                    серым битовым массивом 22x22, содержащим рам-
                    ку  толщиной в 2 элемента изображения,  белую
                    сверху и черную внизу и  справа.  В  качестве
                    шаблонов  вы можете использовать битовые мас-
                    сивы, содержащиеся в BITBTN.RES.

     hDropCurs      Курсор, который должен использоваться во вре-
                    мя буксировки управляющего элемента из палит-
                    ры.

                        Функция Style
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Функция Style  позволяет  вам редактировать свой управляющий
элемент. Сначала в пакете разработчика ресурсов вы должны создать
соответствующее  диалоговое  окно,  а затем реализовать булевскую
функцию, выводящую данное диалоговое окно. Пакет разработчика ре-
сурсов  передает  этой  функции всякий раз,  когда вы инициируете
запрос к данному окну (порождающему окну для  диалога)  описатель
памяти, содержащей структуру RWCTLSTYLE, и две переменные функции
для преобразования строк.

     Возвращаемое значение:

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

     Синтаксис:

     BOOL CALLBACK Style( HWND hWnd, HGLOBAL hCtlStyle,
               LPFNSTRTOID lpfnStrToId, LPFNIDTOSTR lpfnIdToStr);

     Параметры:

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

     hCtlStyle      Описатель  глобальной  памяти, содержащей ре-
                    редактируемую структуру RWCTLSTYLE.

     lpfnStrToId    Переменная функции,  преобразующей  строку  в
                    идентификатор управляющего  элемента для поля
                    wId структуры RWCTLSTYLE. Это позволяет поль-
                    зователю  ввести  идентификатор  управляющего
                    элемента,  используя идентификатор-константу.
                    Эта подпрограмма вычисляет строку как выраже-
                    ние,  возвращая результат.  Идентификатор  ID
                    можно  преобразовать  обратно  в строку с по-
                    мощью вызова функции lpfnIdToStr.

     lpfnIdToStr    Переменная функции, которая преобразует иден-
                    тификатор управляющего  элемента  в  поле wId
                    структуры  RWCTLSTYLE в строку для редактиро-
                    вания.  С  помощью вызова функции lpfnStrToId
                    идентификатор можно преобразовать  обратно  в
                    строку. Данная функциональная переменная поз-
                    воляет пользователю  вместо  значения  видеть
                    символьную константу,  представляющую иденти-
                    фикатор управляющего элемента.

     Структура DData:

     /*
      * CONTROL-STYLE DATA STRUCTURE
      *
      * Функция стиля класса использует эту структуру данных
      * для установки или сброса различных атрибутов управляющего
      * элемента.
      *
      */

     typedef struct {
       UINT         wX;                  /* x - начало элемента */
       UINT         wY;                  /* y - начало элемента */
       UINT         wCx;                 /* ширина элемента */
       UINT         wCy;                 /* высота элемента */
       UINT         wId;                 /* идентификатор дочернего
                                            элемента */
       DWORD        dwStyle;             /* стиль элемента */
       char         szClass[CTLCLASS];   // имя класса элемента
       char         szTitle[CTLTITLE];   /* текст элемента */
       BYTE         CtlDataSize;         /* размер упр. данных */
       BYTE         CtlData[ CTLDATALENGTH]; /* упр. данные */
     } RWCTLSTYLE;

     typedef RWCTLSTYLE *   PRWCTLSTYLE;
     typedef RWCTLSTYLE FAR *   LPRWCTLSTYLE;

     wX             Горизонтальное  (X) расположение управляющего
                    элемента в диагональных координатах.

     wY             Вертикальное  (Y)  расположение  управляющего
                    элемента в диагональных координатах.

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

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

     wId            Значение идентификатора управляющего  элемен-
                    та. Перед  выводом  данных для редактирования
                    данное значение  должно  преобразовываться  в
                    строку путем вызова функции lpfnIdToStr.  Об-
                    ратно в слово для записи оно должно  преобра-
                    зовываться  путем вызова после редактирования
                    функции lpfnStrToId.

     dwStyle        Флаги стиля управляющего элемента.

     szClass        Имя класса управляющего элемента.

     szTitle        Заголовок управляющего элемента.

     CtlDataSize    Windows  позволяет  управляющим  элементам  в
                    файле ресурса  иметь до 255 байт определяемых
                    управляющим  элементом  данных.  Данное  поле
                    указывает,  сколько из этого пространства ис-
                    пользуется управляющим элементом.  Данные за-
                    писываются в CtlData.

     CtlData        Данное поле  содержит до 255 байт специфичес-
                    ких для управляющего элемента данных. Исполь-
                    зуемый   объем  должен  записываться  в  поле
                    CtlDataSize.  Использование этой области дан-
                    ных определяется пользователем.

     Когда вы сохраняете свой проект, пакет разработчика ресурсов
сохраняет в файле .RC или .RES массив CtlData.

     Чтобы разрешить доступ управляющего элемента к этому  масси-
ву,  из прикладной программы на этапе выполнения, параметр lParam
сообщения WM_CREATE указывается на структуру данных CREATESTRUCT.
Структура CREATESTRUCT содержит поле lpCreateParams,  указывающее
на  дополнительные  данные,  которые  вы  записываете  в   массив
CtlData. Если указатель имеет значение NULL, то структура CtlData
отсутствует.

     Переменная CtlDataSize  вашей  программе  недоступна.  Чтобы
сделать  размер  данных  доступных для программы,  массив CtlData
должен либо содержать фиксированный объема данных,  либо его пер-
вый байт должен содержать длину данных.

     Функция Style  сначала конвертирует идентификатор ID в стро-
ку, передавая   числовое    значение    идентификатора    функции
LPFNIDTOSTR.  Затем функция Style выводит эту строку в диалоговом
окне.

     Если пользователь изменяет возвращаемую LPFNIDTOSTR  строку,
то   функция   Style   проверяет  строку,  передавая  ее  функции
LPFNSTRTOID,  которая анализирует,  является ли строка допустимым
выражением-константой. Если LPFNSTRTOID возвращает в LOWORD 0, то
идентификатор ID недопустим и +выводится в диалоговом  окне,  так
что  пользователь может изменить его на допустимый идентификатор.
Если проверка в LPFNSTRTOID  прошла  успешна,  она  возвращает  в
LOWORD ненулевое значение и идентификатор в HIWORD.

                        Функция Flags
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Функция Flags используется пакетом разработчика ресурсов для
трансляции стиля управляющего элемента в текст. Пакет разработчи-
ка ресурсов вставляет этот текст в редактируемый файл .RC.  Функ-
ция должна конвертировать только значения,  уникальные для управ-
ляющего элемента.  Например,  если вы создавали функцию Flags для
класса командных кнопок Windows, вам нужно только проверить млад-
шие 16 бит Flags и транслировать их в константу bs_XXXX.

     Возвращаемое значение:

     Возвращает число байт,  копируемых в  целевую  строку.  Если
слово  Flags  не является допустимым,  или строка превышает длину
MaxString, то возвращает 0.

     Синтаксис:

     UINT CALLBACK Flags(DWORD dwFlags, LPSTR lpStyle, UINT
                                                   wMaxString);

     Параметры:

     dwFlags        Стиль  управляющего  элемента, который должен
                    транслироваться в текст.  Это поле получается
                    из поля dwStyle структуры RWCTLSTYLE, переда-
                    ваемой функциональной переменной Style.

     lpStyle        Адрес записи транслируемого текста.

     wMaxString     Максимальное  число  байт,   которые  функция
                    Flags может записывать в Style.

              Для тех, кто работает на языке Паскале
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                       Функция ListClasses
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     ListClasses - это реализуемая программистом функция, которая
передает информацию о классах специализированных управляющих эле-
ментов обратно пакету разработчика ресурсов.  Экспорт ListClasses
отмечает вашу DLL, как поддерживающую данную спецификацию специа-
лизированных управляющих элементов.

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

     Функция ListClasses должна возвращать  описатель  глобальной
памяти,  выделенный функцией GlobalAlloc.  Память,  адресуемая по
этому описателю, содержит запись типа TCtlClassList, которая опи-
сывает  содержащиеся  в библиотеке специализированные управляющие
элементы. Запись TCtlClassList описывается далее. Описатель осво-
бождается пакетом разработчика ресурсов и не должен осбовождаться
DLL.

     Синтаксис:

     function ListClasses(AppName: PChar; Version: Word;
                    Load: TLoad; Edit: TEdit): THandle; export;

     Возвращаемое значение:

     Возвращает глобальный описатель глобальной памяти,  содержа-
щей запись типа TCtlClassList.

     Параметры:

     AppName        Имя класса основного окна вызывающей приклад-
                    ной программы.  Это  значение может использо-
                    ваться специализированным управляющим элемен-
                    тов  для определения того,  выполняется ли он
                    редактором  ресурсов.  Если   AppName   равно
                    "rwswnd", то вызывающей прикладной программой
                    является пакет разработчика ресурсов.

     Version        Номер версии вызывающей прикладной программы.
                    Основной номер  версии  содержится  в старшем
                    байте,  а дополнительный - в младшем.  Напри-
                    мер, версия 1.02 - это $0102.

     Load           Функциональная  переменная, которую специали-
                    зированный управляющий элемент может  исполь-
                    зовать  для получения описания ресурса в про-
                    екте,  редактируемого  вызывающей  прикладной
                    программой.     Это     эквивалент    функции
                    LoadResource в API Windows. Эта функция имеет
                    два  параметра  -  тип ресурса и имя ресурса.
                    Специализированный управляющий  элемент   от-
                    ветственен за освобождение глобального описа-
                    теля (если он имеется),  возвращаемого данной
                    функцией.

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

     Записи возвращаемого значения:

     PCtlClassList = ^TCtlClassList;
     TCtlClassList = record
       nClasses: Integer;           { Число классов в списке }
       Classes: array[0..0] of TRWCtlClass;   { Список классов }
     end;

     TCtlClassList contains a variable number of TRWCtlClass
     records, the number of which is determined by the nClasses
     field.

     PRWCtlClass = ^TRWCtlClass;
     TRWCtlClass = record
       fnInfo:  TFnInfo;                       { функция Info }
       fnStyle: TFnStyle;                      { функция Style }
       fnFlags: TFnFlags;                      { функция Flags }
       szClass: array[0..ctlClass-1] of Char;  { имя класса }
     end;

     Каждый класс управляющих элементов в DLL должен соответство-
вать записи TRWCtlClass в TCtlClassList.  Поле  szClass  содержит
имя, с которым регистрируется класс. Например, если вы вызывали
RegisterClass, задавая имя  класса  как  'MYBUTTON',  то  szClass
должно содержать 'MYBUTTON'.

     Функциональные переменные Info, Style и Flags (которые соот-
ветствуют указателям TFnInfo, TFnStyle и TFnFlags) описаны в сле-
дующих разделах.

                        Функция Info
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Функция Info вызывается пакетом  разработчика  ресурсов  для
получения информации  о  классе  управляющего  элемента,  включая
строку, добавляемую в  управляющий  элемент-меню,  и  графическое
изображение, добавляемое   в  палитру  инструментальных  средств.
Функция возвращает описатель памяти, которую можно распределить с
помощью GlobalAlloc.  Этот  описатель должен ссылаться на память,
содержащую запись TRWCtlInfo.  Аналогично ListClasses, возвращае-
мый  Info описатель освобождается пакетом разработчика ресурсов и
не должен освобождаться DLL.  Данная функция  вызывается  пакетом
разработчика ресурсов перед загрузкой DLL.

     Синтаксис:

     function Info: Handle; export;

     Возвращаемое значение:

     Возвращает описатель  глобальной  памяти,  содержащей запись
типа TRWCtlInfo.

     Параметры:

     Нет.

     Возвращает значение записи:

     TRWCtlInfo содержит две части:

     - Первая часть имеет фиксированную длину и обеспечивает  ин-
       формацию о классе управляющего элемента в целом.

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

     Каждый класс управляющих элементов включает в себя несколько
типов управляющих элементов.  Например,  Windows  предусматривает
класс  BUTTON,  включающий  в себя "нажимаемые" командные кнопки,
кнопки с независимой фиксацией и кнопки  с  зависимой  фиксацией.
Это многообразие может дублироваться вашими классами, обеспечивая
в записи TRWCtlInf две или более записи TRWCtlType.

     Описание TRWCtlInfo имеет вид:

     PRWCtlInfo = ^TRWCtlInfo;
     TRWCtlInfo = record
       wVersion:   Word;           { версия элемента }
       wCtlTypes:  Word;           { типы управляющего элемента }
       szClass:    array[0..ctlClass-1] of Char;
                                   { имя управляющего класса }
       szTitle:    array[0..ctlTitle-1] of Char;
                                   { заголовок элемента }
       szReserved: array[0..9] of Char;
                                   { зарезервировано }
       ctType:     array[0..ctlTypes] of TRWCtlType;
                                   { список типов управляющих
                                     элементов }
     end;

     wVersion       Номер  версии  библиотеки  специализированных
                    управляющих элементов.  Основной номер версии
                    содержится в старшем байте,  а дополнительный
                    - в младшем.  Например,  версия  1.02  -  это
                    0x0102. Это поле в пакете разработчика ресур-
                    сов не используется.

     wCtlTypes      Число подтипов управляющих элементов, опреде-
                    ленных в массиве ctType.

     szClass        Имя класса,  зарегистрированного  в  Windows.
                    Оно дублируется  из  записи  TCtlClassList  и
                    сохраняет совместимость снизу-вверх со специ-
                    фикацией специализированных управляющих  эле-
                    ментов Windows.

     szReserved     Место, зарезервированное для будущего исполь-
                    зования. Должно очищаться путем записи  нуле-
                    вых символов (#0).

     ctType         Массив   записей   описания   подтипов   типа
                    TRWCtlType.

     Приведем описание TRWCtlType:

     PRWCtlType = ^TRWCtlType;
     TRWCtlType = record
       wType:   Word;                         { стиль типа }
       wWidth:  Word;                         { ширина }
       wHeight: Word;                         { высота }
       dwStyle: LongInt;                      { стиль по
                                                умолчанию }
       szDescr: array[0..ctlDescr-1] of Char; { имя меню }
       hToolBit:  HBitmap;                    { битовый массив }
       hDropCurs: HCursor;              { курсор буксировки }
     end;

     wType          Определяемое пользователем значение,  исполь-
                    зуемое для указания подтипа управляющего эле-
                    мента.  Это значение не используется в пакете
                    разработчика ресурсов.

     wWidth         Используемая  по  умолчанию  ширина управляю-
                    щего элемента.  Пакет  разработчика  ресурсов
                    будет использовать это значение, если, напри-
                    мер, управляющий элемент создается путем бук-
                    сировки пиктограммы из палитры инструменталь-
                    ных средств.  Если  установлен  старший  бит,
                    wWidth  - это координаты диалога (в этом слу-
                    чае значение задается в  элементах  изображе-
                    ния). Например, значение "32" - это 32 в диа-
                    гональных координатах.

     wHeight        Используемая  по  умолчанию  высота управляю-
                    щего элемента.  Пакет  разработчика  ресурсов
                    будет использовать это значение, если, напри-
                    мер, управляющий элемент создается путем бук-
                    сировки пиктограммы из палитры инструменталь-
                    ных средств.  Если  установлен  старший  бит,
                    wWidth  - это координаты диалога (в этом слу-
                    чае значение задается в  элементах  изображе-
                    ния). Например, значение "32" - это 32 в диа-
                    гональных координатах.

     wHeight        Используемая  по  умолчанию  высота управляю-
                    щего элемента.  Пакет  разработчика  ресурсов
                    будет использовать это значение, если, напри-
                    мер, управляющий элемент создается путем бук-
                    сировки пиктограммы из палитры инструменталь-
                    ных средств.  Если  установлен  старший  бит,
                    wHeight - это координаты диалога (в этом слу-
                    чае значение задается в  элементах  изображе-
                    ния). Например, значение "32" - это 32 в диа-
                    гональных  координатах,  но  значение  "32 or
                    $8000" задается в элементах изображения.

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

     szDescr        Описание подтипа  управляющего элемента. Дан-
                    ный текст используется  пакетом  разработчика
                    ресурсов для построения элемента меню,  кото-
                    рый пользователь может использовать для  соз-
                    дания  экземпляра  вашего специализированного
                    управляющего элемента.

     hToolBit       Описатель графического  изображения,  которое
                    будет помещено   в  палитру  инструментальных
                    средств. Пакет разработчика ресурсов требует,
                    чтобы  графическое  изображение было черным и
                    серым битовым массивом 22x22, содержащим рам-
                    ку  толщиной в 2 элемента изображения,  белую
                    сверху и черную внизу и  справа.  В  качестве
                    шаблонов  вы можете использовать битовые мас-
                    сивы, содержащиеся в файле BITBTN.RES.

     hDropCurs      Курсор, который должен использоваться во вре-
                    мя буксировки управляющего элемента из палит-
                    ры.

                        Функция Style
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Функция Style  позволяет  вам редактировать свой управляющий
элемент. Сначала в пакете разработчика ресурсов вы должны создать
соответствующее  диалоговое  окно,  а затем реализовать булевскую
функцию, выводящую данное диалоговое окно. Пакет разработчика ре-
сурсов передает управление этой функции всякий раз, когда вы ини-
циируете запрос на редактирование специализированного управляюще-
го элемента. Пакет разработчика ресурсов передает функции: описа-
тель  окна,  который является для диалога порождающим,  описатель
памяти,  содержащий запись TRWCtlStyle,  и две переменные функции
для преобразования строк.

     Возвращаемое значение:

     Данная функция   должна   возвращать   true,   если   запись
TRWCtlSytle модифицирована, и false в противном случае.

     Синтаксис:

     function Style(Window: HWnd; CtlStyle: THandle; StrToId:
                      TStrToId; IdToStr: TIdToStr): Bool; export;

     Параметры:

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

     CtlStyle       Описатель  глобальной  памяти, содержащей ре-
                    редактируемую запись TRWCtlStyle.

     StrToId        Переменная функции,  преобразующей  строку  в
                    идентификатор управляющего элемента для  поля
                    wId в TRWCtlStyle. Это позволяет пользователю
                    ввести идентификатор  управляющего  элемента,
                    используя идентификатор-константу.  Эта подп-
                    рограмма  вычисляет  строку  как   выражение,
                    возвращая  результат.  Идентификатор ID можно
                    преобразовать обратно в строку с помощью  вы-
                    зова функции IdToStr.

     IdToStr        Переменная функции, которая преобразует иден-
                    тификатор управляющего элемента  в  поле  wId
                    TRWCtlStyle  в  строку для редактирования.  С
                    помощью вызова функции StrToId  идентификатор
                    можно преобразовать обратно в строку.  Данная
                    функциональная переменная позволяет пользова-
                    телю  вместо значения видеть символьную конс-
                    танту, представляющую идентификатор управляю-
                    щего элемента.

     Запись CtlStyle:

     Ниже приведен   тип  записи,  адресуемый  описателем  памяти
CtlStyle:

       PRWCtlStyle = ^TRWCtlStyle;
       TRWCtlStyle = record
         wX:   Word;               { x - начало элемента }
         wY:   Word;               { y - начало элемента }
         wCx:  Word;               { ширина элемента }
         wCy:  Word;               { высота элемента }
         wId:  Word;               { идентификатор дочернего
                                     управляющего элемента }
         dwStyle: LongInt;         { стиль элемента }
         szClass: array[0..ctlClass-1] of Char;
                        { имя класса управляющего элемента }
         szTitle: array[0..ctlTitle-1] of Char;
                                   { текст элемента }
         CtlDataSize: Byte;        { размер уп. данных }
         CtlData: array[0..ctlDataLength-1] of Char;
                                   { управл. данные }
       end;

     wX             Горизонтальное  (X) расположение управляющего
                    элемента в диагональных координатах.

     wY             Вертикальное  (Y)  расположение  управляющего
                    элемента в диагональных координатах.

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

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

     wId            Значение идентификатора управляющего  элемен-
                    та. Перед выводом данных  для  редактирования
                    данное  значение  должно  преобразовываться в
                    строку путем вызова функции IdToStr.  Обратно
                    в  слово  для  записи оно должно преобразовы-
                    ваться  путем  вызова  после   редактирования
                    функции StrToId.

     dwStyle        Флаги стиля управляющего элемента.

     szClass        Имя класса управляющего элемента.

     szTitle        Заголовок управляющего элемента.

     CtlDataSize    Windows  позволяет  управляющим  элементам  в
                    файле ресурса  иметь до 255 байт определяемых
                    управляющим  элементом  данных.  Данное  поле
                    указывает,  сколько из этого пространства ис-
                    пользуется управляющим элементом.  Данные за-
                    писываются в CtlData.

     CtlData        Данное поле  содержит до 255 байт специфичес-
                    ких для управляющего элемента данных. Исполь-
                    зуемый   объем  должен  записываться  в  поле
                    CtlDataSize.  Использование этой области дан-
                    ных определяется пользователем.

     Когда вы сохраняете свой проект, пакет разработчика ресурсов
сохраняет в файле .RC или .RES массив CtlData.

     Чтобы разрешить доступ управляющего элемента к этому  масси-
ву, из прикладной программы на этапе выполнения,  параметр lParam
WM_CREATE указывает на структуру данных  CREATESTRUCT.  Структура
CREATESTRUCT содержит поле lpCreateParams,  которое является ука-
зателем  на  дополнительные  данные,  записанные  вами  в  массив
CtlData array.  Если указатель имеет значение nil, то CtlData от-
сутствует.

     Переменная CtlDataSize  вашей  программе  недоступна.  Чтобы
сделать  размер  данных  доступных для программы,  массив CtlData
должен либо содержать фиксированный объема данных,  либо его пер-
вый байт должен содержать длину данных.

     Функция Style  сначала конвертирует идентификатор ID в стро-
ку, передавая числовое значение идентификатора  функции  IdToStr.
Затем функция Style выводит эту строку в диалоговом окне.

     Если пользователь  изменяет возвращаемую IdToStr строку,  то
функция Style проверяет строку, передавая ее функции StrToId, ко-
торая анализирует, является ли строка допустимым выражением-конс-
тантой. Если StrToId возвращает в младшем слове 0, то идентифика-
тор ID недопустим и выводится в диалоговом окне,  так что пользо-
ватель может изменить его на допустимый идентификатор.  Если про-
верка  в  StrToId прошла успешна,  она возвращает в младшем слове
ненулевое значение, а в старшем слове - идентификатор.

                        Функция Flags
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Функция Flags используется пакетом разработчика ресурсов для
трансляции стиля управляющего элемента в текст. Пакет разработчи-
ка ресурсов вставляет этот текст в редактируемый файл .RC.  Функ-
ция должна конвертировать только значения,  уникальные для управ-
ляющего элемента.  Например,  если вы создавали функцию Flags для
класса командных кнопок Windows, вам нужно только проверить млад-
шие 16 бит Flags и транслировать их в константы bs_XXXX.
     Возвращаемое значение:

     Возвращает число байт,  копируемых в  целевую  строку.  Если
слово  Flags  не является допустимым,  или строка превышает длину
MaxString, то возвращает 0.

     Синтаксис:

     function Flags(Flags: LongInt; Style: PChar; MaxString:
                                                    Word): Word;

     Параметры:

     Flags          Стиль  управляющего  элемента, который должен
                    транслироваться в текст.  Это поле получается
                    из поля dwStyle записи TRWCtlStyle, передава-
                    емой функциональной переменной Style.

     Style          Место записи транслированного текста.

     MaxString      Максимальное число байт, которые функция
                    Flags может записывать в Style.

                  СТИЛИ И КОМАНДНЫЕ КНОПКИ
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Здесь представлены соглашения по стилям,  которые вы  должны
соблюдать при проектировании для диалоговых окон своей работающей
в Windows  прикладной  программе  специализированных  управляющих
элементов Borland (Borland Windows Custom Control - BWCC).

                      Вопросы разметки
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

                           Панели
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Каждое диалоговое окно имеет две панели (области) - основную
панель Main и оперативную панель Action. Основная панель содержит
все элементы, которые считываются или модифицируются при открытии
диалогового  окна.  Оперативная панель содержит командные кнопки,
обычно OK, Cancel и Help.

                           Шрифты
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Диалоги Borland используют шрифт Helvetica Bold размером в 8
пунктов. Диалоговые управляющие элементы BWCC лучше всего  выгля-
дят при  использовании  данного шрифта.  Размер в 8 пунктов - это
маленький размер; используйте его, чтобы размер ваших диалогов не
был слишком велик. Естественно, для специализированных диалоговых
управляющих элементов, вы можете применять и другие шрифты.

                       Групповые блоки
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Соберите все параметры, выводимые в основной панели, в груп-
повом блоке BWCC.  Например, поместите в групповой блок связанные
кнопки  с  независимой фиксацией.  В групповой блок следует также
помещать каждый отдельный элемент, такой как текстовый блок имени
файла или комбинированный блок. С блоком списка Borland этого де-
лать не нужно, поскольку он рисует свою собственную рамку.

                      Командные кнопки
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Для стиля командных кнопок учитывается следующее:

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

     - Для текста кнопок используйте шрифт Helvetica (нормальный,
       а не жирный) и выравнивайте его вправо.

     - Для  высоты  каждой командный кнопки используйте размер 39
       элементов изображения для разрешающей возможности VGA и 30
       для EGA.

     - Большинство  командных кнопок имеет и для VGA,  и для EGA,
       размер 63 элемента изображения.  Хотя  для  предотвращения
       перекрытия  текста  и  графического  изображения вы можете
       сделать кнопку шире, по возможности ширину следует ограни-
       чить указанным размером.

           Рекомендации по размера и выравниванию
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

                   Упорядочивание панелей
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Основная панель вашего диалогового окна должна иметь по воз-
можности больший размер, чтобы вместить все управляющие элементы.
Оперативная панель должна быть достаточно велика,  чтобы вместить
все командные  кнопки;  ее  следует разместить внизу или в правой
части диалогового окна.

     Законченное окно следует сделать по возможности  квадратным.
Если основная  панель  больше в ширину,  чем в высоту,  поместите
оперативную панель в нижнюю часть диалогового окна. Если основная
панель больше в высоту,  чем в ширину,  поместите оперативную па-
нель с правой стороны.

                       Основная панель
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

     - Соблюдайте для групповых блоков разрядку  (вертикальную  и
       горизонтальную) в 8  диагональных единиц.

     - С  каждого края диалогового окна (до ближайшего группового
       блока) оставляйте поле размером в 8 диагональных единиц.

     - В столбце групповых блоков делайте их одного размера.  Ши-
       рина  должна  соответствовать самому широкому элементу или
       заголовку.  Для соответствия  расширьте  другие  групповые
       блоки.

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

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

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

              Горизонтальная оперативная панель
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

     - Сделайте оперативную панель достаточно высокой,  чтобы она
       содержала командные кнопки, и оставьте над и под командны-
       ми кнопками поле в 8 диагональных единиц.

     - Равномерно распределите командные кнопки вдоль оперативной
       панели, оставив минимум 8 диагональных единиц между самими
       командными кнопками и между кнопками и левым и правым кра-
       ем диалогового окна.

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

               Вертикальная оперативная панель
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Эта оперативная  панель выводится в правой части диалогового
окна. Она занимает всю высоту диалогового окна.  Дадим  следующие
рекомендации.

     - Сделайте оперативную панель достаточно широкой,  чтобы она
       содержала командные кнопки,  и оставьте справа и слева  от
       командных кнопок поле в 8 диагональных единиц.

     - Равномерно распределите командные кнопки вдоль оперативной
       панели, оставив минимум 8 диагональных единиц между самими
       командными  кнопками  и  между кнопками и верхним и нижним
       краем диалогового окна.

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

                 Заголовки групповых блоков
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Заголовки групповых блоков  идентифицируют  содержимое  этих
блоков. По умолчанию заголовок группового блока в диалоговом окне
Borland имеет серый фон.  К групповым блокам применимы  следующие
рекомендации:

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

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

     - Если  групповой  блок содержит единственный текстовый блок
       или комбинированный блок, поместите заголовок слева от уп-
       равляющего элемента и на 4 единицы от края группового бло-
       ка, либо разместите его над управляющим элементом.

     - Если групповой блок содержит два или  более  редактируемых
       текстовых поля или комбинированных блока (или и то, и дру-
       гое), то перед каждым из них следует указать короткую мет-
       ку.

     - Выровняйте заголовки групповых блоков,  расположенных выше
       этих блоков.

     - Используйте для всех заголовков групповых блоков высоту  9
       единиц.

     - Сделайте заголовки той же ширины, что и групповые блоки.

                  Элементы групповых блоков
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Следующие рекомендации помогут вам  упорядочить  элементы  в
групповом блоке:

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

     - Выровняйте управляющие элементы влево.

     - Оставьте левые и правые поля между краями группового блока
       и самым широким управляющим элементом размером в 4  диаго-
       нальных единицы.

     - Оставьте  поля  между верхом группового блока и первым уп-
       равляющим элементом в группе  размером  в  4  диагональных
       единицы.

     - Оставьте поля между низом группового блока и последним уп-
       равляющим элементом в группе  размером  в  4  диагональных
       единицы.

     - Если  групповой блок содержит одно или более текстовых ре-
       дактируемых полей или комбинированных блоков (или и то,  и
       другое),  сделайте  их одной ширины.  Распределите их так,
       чтобы нижний находился в 13 единицах от нижнего края  сле-
       дующего.  Выровняйте  эти управляющие элементы в групповом
       блоке справа с расстоянием 4 единицы от правого края.  Вы-
       ровняйте влево заголовки,  оставив поле в 4 единицы.  Сде-
       лайте групповой блок достаточно большим,  чтобы оставить 4
       единицы  между  самым длинным заголовком и его управляющим
       элементом.

                       Блоки сообщений
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Аналогично диалоговым блокам,  блоки сообщений имеют две па-
нели - основную и оперативную.

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

     При проектировании  блока сообщения соблюдайте следующие ре-
комендации:

     - Поместите графический значок с левой стороны от группового
       блока.

     - Со всех четырех сторон группового блока оставьте поле в  8
       диагональных единицы.

     - Отделите графический значок и область текста пространством
       в 8 диалоговых единиц.

     - Сцентрируйте область текста вертикально,  оставив 8 диало-
       говых единиц между верхом и низом области текста и верхни-
       ми и нижними краями диалога.

     - Поместите оперативную область в нижнюю часть диалога.

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

                   Проверка вашего диалога
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     При вычислении диалоговых единиц Windows округляет результа-
ты вычисления.  Ошибки округления могут повлиять на вывод  вашего
диалогового окна.  Аккуратно  проверьте диалог.  Следует отметить
следующие проблемы:

     - Конфликт  между заголовком текста и верхом группового бло-
       ка.

     - Очевидно неравные интервалы в вертикальной группе кнопок с
       независимой или зависимой фиксацией.

     - Неправильная граница в выводимых областях панели.

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

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

         Использование стандартных командных кнопок
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

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

     Например, диалоговое окно Search может содержать в оператив-
ной панели командные кнопки Find Next и Replace.

     Для стандартных  командных кнопок соблюдайте следующие реко-
мендации:

     - Поместите эти командную кнопку в основную панель,  а не  в
       оперативную панель.

     - Не  помещайте эти командные кнопки в групповой блок.  Раз-
       местите их непосредственно не поверхности основного окна.

     - Сделайте все командные кнопки в группе одной  ширины.  Они
       должны  быть достаточно широки,  чтобы вместить наибольшую
       текстовую строку.

     - Сделайте командные кнопки высотой в 14  диагональных  еди-
       ниц.

     - Постарайтесь ограничить текст 20 символами или меньше.

     - Выровняйте кнопки в столбец или в строку, в зависимости от
       того, что в вашем диалоге выглядит лучше.

     - Слева и справа от столбца командных кнопок оставьте 8 диа-
       гональных единиц.  Вертикальный  интервал между командными
       кнопками и другими управляющими элементами выше  или  ниже
       командных кнопок должен быть одинаковым.

     - Оставьте  8 диагональных единиц выше и ниже строки команд-
       ных  кнопок.  Горизонтальные  интервалы  между  командными
       кнопками и другими управляющими элементами слева или спра-
       ва от командных кнопок должны быть одинаковы.

                   ТЕХНИЧЕСКИЕ АСПЕКТЫ
     СПЕЦИАЛИЗИРОВАННЫХ УПРАВЛЯЮЩИХ ЭЛЕМЕНТОВ BORLAND (BWCC)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Здесь содержится информация,  которая может оказаться полез-
ной и  интересной для продвинутого разработчика ресурсов.  Однако
вы можете успешно создать или модифицировать  прикладные  ресурсы
для BWCC, используя информацию, содержащуюся в файле MANUAL.RW.

         Определение производного диалогового класса
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Чтобы создать свой собственный диалоговый класс окна (напри-
мер, если вы хотите, чтобы диалоговое окно имело свою собственную
пиктограмму),  вы должны построить класс, "производный" от класса
BORDLG.

     Чтобы получить класс, производный от BORDLG, сделайте следу-
ющее:

     1. Задайте имя класса окна,  которое начинается с  "bordlg".
        Имя класса начинается с предшествующего символа подчерки-
        вания ("_bordlg..."),  а само имя "bordlg"  резервируется
        для использования Borland.  Таким образом, "bordlg_foo" -
        это  допустимое  производное  имя,   а   "mybordlg"   или
        "_bordlg_mine" - нет.

     2. Для сообщений, которые она не обрабатывает, функция ваше-
        го диалогового окна должна вызывать BWCCDefDlgProc,  а не
        стандартную функцию Windows.

     3. Процедура  окна вызывает BWCCDefDlgProc для следующих со-
        общений:

            WM_CTLCOLOR
            WM_NCCREATE
            WM_CREATE
            WM_NCDESTROY
            WM_SETFONT
            WM_PAINT
            WM_ERASEBKGND

                    Техническое описание
        специализированных управляющих элементов Borland
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     В следующих 4 разделах содержится  описание  каждого  класса
специализированных управляющих   элементов  Borland.  Большинство
подзаголовков говорят сами за себя,  поэтому поясним лишь следую-
щие:

     - "Имя  класса"  задает  имя  пакета  разработчика  ресурсов
       (Resource Workshop) в кавычках,  за  которым  следует  имя
       идентификатора - определение Cи или константа Паскаля.

     - Раздел "Стили окна" включает подразделы "Типы" и "Парамет-
       ры".  Типы определяют внешний вид и функциональные возмож-
       ности управляющего элемента.

     - Раздел  "Сообщения включает" включает подразделы "Команды"
       и "Уведомления". Команды - это сообщения, передаваемые уп-
       равляющему элементу. Уведомления - это специальный тип со-
       общения WM_COMMAND, используемого управляющими элементами.
       Идентификатор  управляющего  элемента для командной кнопки
       передается в wParam сообщения,  а lParam  содержит  и  тип
       уведомления,  и описатель окна управляющего элемента.  Тип
       уведомления содержится в старшем слове lParam и может быть
       выделен с помощью макрокоманды HIWORD;  описатель окна со-
       держит в младшем слове lParam и может выделяться с помощью
       макрокоманды LOWORD.

                 Управляющий элемент BORBTN
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Функция: "нажимаемые" командные кнопки с графическим изобра-
жением и "накладываемые" панели.

     Имя класса: "borbtn" (BUTTON_CLASS)

                         Стили окна
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

 Типы, наследуемые из стандартных управляющих элементов Windows
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                BS_DEFPUSHBUTTON и BS_PUSHBUTTON
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Эти типы определяют два стандартных  типа  командных  кнопок
Windows:

     - BS_DEFPUSHBUTTON
     - BS_PUSHBUTTON

     Тип BS_DEFPUSHBUTTON идентифицирует "используемую по умолча-
нию"  командную кнопку.  Когда пользователь нажимает в диалоговом
окне клавишу Enter,  то используемый по  умолчанию  идентификатор
кнопки,  находится в wParam сообщения WM_COMMAND, посылаемого по-
рождающему окну кнопки.  Администратор сообщений Windows посылает
от кнопки диалогового окна уведомление BN_CLICKED.

     Имеется два исключения:

     - Если  фокус  перемещен с помощью нажатия Tab на клавиатуре
       на другую командную кнопку, то она временно становится ис-
       пользуемой по умолчанию, и уведомление BN_CLICKED ссылает-
       ся на нее.

     - Если фокус перемещен на редактируемый управляющий элемент,
       для  которого  установлен  флаг ES_WANTRETURN,  то клавиша
       Enter вставляет в текст  редактируемого  элемента  возврат
       каретки.

                  Типы, уникальные для BWCC
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                           BBS_BITMAP
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

                   Параметры, наследуемые
          от стандартных управляющих элементов Windows
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Отсутствуют.

               Параметры, уникальные для BWCC
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                        BBS_PARENTNOTIFY
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данный параметр  приводит  к  генерации  на этапе выполнения
следующих уведомлений:

     - BBN_SETFOCUS
     - BBN_SETFOCUSMOUSE
     - BBN_GOTATAB
     - BBN_GOTABTAB

     Эти уведомления описаны ниже.

                        BBS_OWNERDRAW
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

                        BBS_DLGPAINT
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Класс специализированных   диалоговых  элементов  использует
данный параметр для информирования кнопки о том,  что  диалоговый
класс будет  рисовать  кнопку.  Этот параметр предназначен только
для внутреннего использования BWCC.

                          Сообщения
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                     Команды, наследуемые из
            стандартных управляющих элементов Windows
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                           BM_SETSTYLE
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Диалоговый администратор Windows использует данное сообщение
для переключения между типами BS_DEFPUSHBUTTON и BS_PUSHBUTTON.

                         BM_SETSTATE
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данное сообщение изменяет  состояние  "подсветки"  командной
кнопки.  Если  параметр сообщения wParam ненулевой,  то командная
кнопка подсвечивается (отображается а нажатом состоянии).

                         BM_GETSTATE
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данное сообщение  определяет,  является ли кнопка подсвечен-
ной. Оно возвращает ненулевое значение при подсветке кнопки и  0,
когда кнопка не подсвечивается.

                Команды, уникальные для BWCC
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                           BBM_SETBITS
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

     Чтобы использовать  данное сообщение,  нужно сначала создать
для отдельной кнопки три битовых массива:

     - кнопка без перемещенного на нее с помощью клавиатуры фоку-
       са;

     - кнопка с перемещенным на нее с помощью клавиатуры фокусом,
       но не "нажатая";

     - "нажатая" (подсвеченная) кнопка.

     После создания битовых массивов (графических изображений) вы
должны поместить  описатели этих графических изображений в массив
и передать указатели far на этот массив в параметре lParam  сооб-
щения BM_SETBITS.

      Следующие примеры на Си и Паскале показывают, как это дела-
ется:

     Пример на Си:

     HBITMAP hBits[3];
     HWND  hWndButton = GetDlgItem( hWnd, ID_FOO);

     hBits[0] = MakeNormalBitmap(...);
     hBits[1] = MakeHighlightBitmap(...);
     hBits[2] = MakeFocusBitmap(...);

     SendMessage( hWndButton, BBM_SETBITS, 0, (LONG) (LPSTR)
          hBits);

     Пример на Паскале:

     procedure SetBitmaps(Wnd: HWnd);
     var
      Bits: array[0..2] of HBitmap;
      WndButton: HWnd;
     begin
      WndButton := GetDlgItem(Wnd, id_Foo);
      Bits[0] := MakeNormalBitmap(...);
      Bits[1] := MakeHighlightBitmap(...);
      Bits[2] := MakeFocusBitmap(...);
      SendMessage(WndButton, BBM_SETBITS, 0, @@Bits);
     end;

     Примечание: Если графическое  изображение  командной  кнопки
инициализируется таким  образом,  то  прикладная программа должна
уничтожать эти битовые массивы  путем  вызова  перед  завершением
функции DeleteObject. Прикладная программа обычно делает этот вы-
зов с помощью описателя сообщения WM_DESTROY для командной кнопки
порождающего окна.

                 Уведомления, наследуемые из
            стандартных управляющих элементов Windows
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                      Сообщение BN_CLICKED
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Командная кнопка посылает данное сообщение, когда она "нажи-
мается" пользователем  с помощью кнопки "мыши" при перемещении на
нее указателя или с помощью следующих действий клавиатуры:

     - Пользователь нажимает клавишу пробела или Enter при  пере-
       мещении на кнопку фокуса.

     - Пользователь нажал оперативные клавиши кнопки, когда фокус
       находится на другом управляющем элементе.

     Чтобы связать с командной кнопкой оперативную  клавишу,  по-
местите перед  значением  ASCII  клавиши  текста  кнопки символ &
(например, "&Yes").  Заметим, что регистр буквы здесь значения не
имеет.

              Уведомления, уникальные для BWCC
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Если вы определили стиль BBS_PARENTNOTIFY,  то доступны сле-
дующие уведомления.

                          BBN_SETFOCUS
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Командная кнопка посылает это уведомление своему порождающе-
му окну,  когда  с  помощью действий,  отличных от нажатия кнопки
"мыши", на него перемещается фокус.

                        BBN_SETFOCUSMOUSE
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Командная кнопка посылает это уведомление своему порождающе-
му окну, когда на него перемещается фокус с помощью нажатия кноп-
ки "мыши".

                           BBN_GOTATAB
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

                          BBN_GOTABTAB
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Командная кнопка посылает это уведомление своему порождающе-
му окну,  когда  пользователь  нажимает клавишу клавиши Shift-Tab
(обратная табуляция), а фокус находится на командной кнопке. Пос-
ле  этого  порождающее  окно  может вмешаться в обработку нажатия
клавиши, возвращая ненулевое значение.

                    Сообщение WM_DRAWITEM
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Если вы задали для командной кнопки стиль BBS_OWNERDRAW, она
посылает своему порождающему окну сообщение WM_DRAWITEM, Параметр
lParam  этого  сообщения  содержит  указатель  far  на  структуру
DRAWITEMSTRUCT.

     Поля данной структуры описываются в документации SDK Windows
по данному сообщению, но здесь внесены следующие усовершенствова-
ния:

     Для командных  кнопок,  отображаемых  Windows,  поле  itemID
структуры DRAWITEMSTRUCT не используется.  Кнопки Borland исполь-
зуют это поле для передачи  своего  типа.  Если  кнопка  является
кнопкой,  используемой по умолчанию, то данное поле содержит зна-
чение BS_DEFPUSHBUTTON.  В противном случае оно содержит значение
BS_PUSHBUTTON.

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

      CtlType      ODT_BUTTON

      CtlID        Идентификатор управляющего элемента для кнопки
                   (GetWindowWord(hWnd, GWW_ID)).

      itemAction   ODA_DRAWENTIRE, пока фокус не  изменится и  не
                   приведет к переотображению. В этом случае поле
                   содержит ODA_FOCUS.

      itemState    Комбинация следующих  значений, в  зависимости
                   текущего состояния командной кнопки:

                   ODS_FOCUS      если  с помощью  клавиатуры  на
                                  кнопку перемещен фокус.
                   ODS_DISABLED   если кнопка запрещена.
                   ODS_SELECTED   если командная кнопка подсвече-
                                  на.

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

      hDC          Контекст устройства для окна.  Все значения  в
                   состоянии по умолчанию возвращаются GetDC.

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

   Схема нумерации идентификатора ресурса командной кнопки
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     При анализе  шаблона структуры данных диалога Windows компи-
лятор ресурсов Microsoft не предусматривает определяемых  пользо-
вателем  данных  инициализации  управляющего элемента.  В связи с
этим пакет разработчика  ресурсов  Resource  Workshop  использует
идентификатор управляющего элемента в качестве базы для получения
идентификатора ресурса.  Для каждой  графической  кнопки  имеется
шесть графических образов;  три для EGA и монохромных устройств и
три для VGA и устройств с высокой разрешающей способностью.

     Идентификаторы ресурсов битовых массивов получаются для  ко-
мандной кнопки с помощью следующих формул:

   Control ID + 1000:  графический образ с разрешением VGA;  нор-
                       мальное состояние
   Control ID + 3000:  графический образ с разрешением VGA; нажа-
                       тое состояние
   Control ID + 5000:  графический образ с разрешением VGA; фокус

   Control ID + 2000:  графический  образ с разрешением  EGA; но-
                       рмальное состояние
   Control ID + 4000:  графический образ с разрешением  EGA;  на-
                       жатое состояние
   Control ID + 6000:  графический образ с разрешением EGA; фокус

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

                Управляющий элемент BORRADIO
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Функция: лучшее представление кнопок с зависимой фиксацией.

     Имя класса: "borradio" (RADIO_CLASS)

                         Стили окна
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                      Типы, наследуемые из
            стандартных управляющих элементов Windows
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                       Тип BS_RADIOBUTTON
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Неавтоматическая кнопка с зависимой  фиксацией.  Эта  кнопка
через  уведомление BN_CLICKED просто информирует прикладную прог-
рамму, что она "выбрана" (нажата).  Прикладная программа  ответс-
твенна  за вызов функции CheckRadioButton для изменения состояния
командной кнопки и состояния других сгруппированных с ней кнопок.

                   Тип BS_AUTORADIOBUTTON
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Автоматическая кнопка с зависимой фиксацией. Когда пользова-
тель выбирает одну из этих кнопок,  она автоматически маркируется
(кружком или ромбом),  а ранее выбранная кнопка группы становится
невыбранной без вмешательства прикладной программы.

                  Типы, уникальные для BWCC
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Отсутствуют.

                   Параметры, наследуемые
          из стандартных управляющих элементов Windows
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                      Параметр BS_LEFTTEXT
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

                 Параметры, уникальные для BWCC
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                    Параметр BBS_PARENTNOTIFY
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данный параметр приводит к тому, что на этапе выполнения ге-
нерируются следующие уведомляющие сообщения:

     - BBN_SETFOCUS
     - BBN_SETFOCUSMOUSE
     - BBN_GOTATAB
     - BBN_GOTABTAB

     Данные уведомления описаны выше.

                   Параметр BBS_OWNERDRAW
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данный параметр приводит к передаче управляющим элементом на
этапе выполнения  сообщения  WM_DRAWITEM своему порождающему окну
для специализированного отображения.

                    Параметр BBS_DLGPAINT
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Класс специализированных диалоговых BWCC использует этот па-
раметр для информирования командной кнопки, что данных диалоговый
класс  будет  раскрашивать  кнопку.  Данный параметр предназначен
только для внутреннего использования в BWCC.

                          Сообщения
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                      Команды, наследуемые
          из стандартных управляющих элементов Windows
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                           BM_GETCHECK
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данное сообщение приводит к возврату  командной  кнопкой  ее
текущего "выбранного"  состояния (во всех именах сообщений и опи-
сания используется специфика кнопки с независимой фиксацией). Ес-
ли кнопка выбрана (нажата), то она возвращает ненулевое значение.
В противном случае возвращается 0.

                    Сообщение BM_SETCHECK
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данное сообщение изменяет состояние командной кнопки (выбра-
на/не выбрана).  Если параметр wParam сообщения отличен от  нуля,
то кнопка выбрана (заполнена кружком или ромбом).

                    Сообщение BM_GETSTATE
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данное сообщение  определяет,  будет  ли  командная   кнопка
"подсвечена" (рисуется  с  жирным контуром вокруг кружка или ром-
ба). Оно возвращает ненулевое значение при подсветке кнопки и  0,
когда кнопка не подсвечивается.

                    Сообщение BM_SETSTATE
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данное сообщение  изменяет  состояние  подсветки   командной
кнопки. Если параметр wParam сообщения ненулевой, то кнопка подс-
вечивается.

                Команды, уникальные для BWCC
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Отсутствуют.

                  Уведомления, наследуемые
          из стандартных управляющих элементов Windows
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                      Сообщение BN_CLICKED
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Командная кнопка посылает данное сообщение, когда она "нажи-
мается" пользователем  с помощью кнопки "мыши" при перемещении на
нее указателя или с помощью следующих действий клавиатуры:

     - Пользователь нажимает клавишу пробела или Enter при  пере-
       мещении на кнопку фокуса.

     - Пользователь нажал оперативные клавиши кнопки, когда фокус
       находится на другом управляющем элементе.

     Чтобы связать с командной кнопкой оперативную  клавишу,  по-
местите перед  значением  ASCII  клавиши  текста  кнопки символ &
(например, "&Yes").  Заметим, что регистр буквы здесь значения не
имеет.

              Уведомления, уникальные для BWCC
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Следующие уведомления посылаются порождающему  окну  только,
если программист задал стиль BBS_PARENTNOTIFY.

     - BBN_SETFOCUS
     - BBN_SETFOCUSMOUSE
     - BBN_GOTATAB
     - BBN_GOTABTAB

                        BBN_SETFOCUS
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Командная кнопка посылает это уведомление своему порождающе-
му окну,  когда  с  помощью действий,  отличных от нажатия кнопки
"мыши", на него перемещается фокус.

                      BBN_SETFOCUSMOUSE
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Командная кнопка посылает это уведомление своему порождающе-
му окну, когда на него перемещается фокус с помощью нажатия кноп-
ки "мыши".

                         BBN_GOTATAB
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

                        BBN_GOTABTAB
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Командная кнопка посылает это уведомление своему порождающе-
му окну,  когда  пользователь  нажимает клавишу клавиши Shift-Tab
(обратная табуляция), а фокус находится на командной кнопке. Пос-
ле  этого  порождающее  окно  может вмешаться в обработку нажатия
клавиши, возвращая ненулевое значение.

                         WM_DRAWITEM
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Если вы задали для командной кнопки стиль BBS_OWNERDRAW, она
посылает своему порождающему окну сообщение WM_DRAWITEM, Параметр
lParam  этого  сообщения  содержит  указатель  far  на  структуру
DRAWITEMSTRUCT.

     Поля данной структуры описываются в документации SDK Windows
по данному сообщению, но здесь внесены следующие усовершенствова-
ния:

     Для автоматических  кнопок с зависимой фиксацией поле itemID
структуры DRAWITEMSTRUCT содержит значение BS_AUTORADIOBUTTON.  В
противном случае оно содержит значение BS_RADIOBUTTON.

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

      CtlType      ODT_BUTTON

      CtlID        Идентификатор управляющего элемента для кнопки
                   (GetWindowWord(hWnd, GWW_ID)).

      itemAction   ODA_DRAWENTIRE, пока не  изменение  фокуса  не
                   приведет к переотображению. В этом случае поле
                   содержит ODA_FOCUS.

      itemState    Комбинация следующих  значений, в  зависимости
                   текущего состояния командной кнопки:

                   ODS_FOCUS      если  с помощью  клавиатуры  на
                                  кнопку перемещен фокус.
                   ODS_DISABLED   если кнопка запрещена.
                   ODS_SELECTED   если командная кнопка подсвече-
                                  на.

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

      hDC          Контекст устройства для окна.  Все значения  в
                   состоянии по умолчанию возвращаются GetDC.

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

                Управляющий элемент BORCHECK
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Функция: лучшее представление кнопок с независимой  фиксаци-
ей.

     Имя класса: "borcheck" (CHECK_CLASS)

                         Стили окна
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

  Типы, наследуемые из стандартных управляющих элементов Windows
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                           BS_CHECKBOX
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Неавтоматическая кнопка с независимой фиксацией  (блок  про-
верки). Для изменения ее визуального состояния после щелчка кноп-
кой мыши на  этом  элементе  требуется  вмешательство  прикладной
программы.

                         BS_AUTOCHECKBOX
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Кнопка с независимой фиксацией,  который автоматически изме-
няет свое состояние при щелчке на ней кнопкой "мыши".

                    Типы, уникальные BWCC
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Отсутствуют.

                     Параметры, наследуемые
          из стандартных управляющих элементов Windows
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                      Параметр BS_LEFTTEXT
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

               Параметры, уникальные для BWCC
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                    Параметр BBS_PARENTNOTIFY
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данный параметр приводит к тому, что на этапе выполнения ге-
нерируются следующие уведомляющие сообщения:

     - BBN_SETFOCUS
     - BBN_SETFOCUSMOUSE
     - BBN_GOTATAB
     - BBN_GOTABTAB

     Данные уведомления описаны выше.

                   Параметр BBS_OWNERDRAW
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данный параметр приводит к передаче управляющим элементом на
этапе выполнения  сообщения  WM_DRAWITEM своему порождающему окну
для специализированного отображения.

                    Параметр BBS_DLGPAINT
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Класс специализированных диалоговых BWCC использует этот па-
раметр для информирования командной кнопки, что данных диалоговый
класс будет рисовать кнопку.  Данный параметр предназначен только
для внутреннего использования в BWCC.

                          Сообщения
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                      Команды, наследуемые
          из стандартных управляющих элементов Windows
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                      Сообщение BM_GETCHECK
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данное сообщение приводит к возврату  командной  кнопкой  ее
текущего "выбранного" состояния. Если кнопка выбрана (нажата), то
она возвращает ненулевое значение. В противном случае возвращает-
ся 0.

                      Сообщение BM_SETCHECK
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данное сообщение изменяет состояние командной кнопки (выбра-
на/не выбрана).  Если параметр wParam сообщения отличен от  нуля,
то кнопка отображается с отметкой.

                      Сообщение BM_GETSTATE
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Это сообщение определяет, будет ли командная кнопка "подсве-
чена" (рисуется с жирным контуром). Оно возвращает ненулевое зна-
чение при подсветке кнопки и 0, когда кнопка не подсвечивается.

                      Сообщение BM_SETSTATE
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данное сообщение  изменяет  состояние  подсветки   командной
кнопки. Если параметр wParam сообщения ненулевой, то кнопка подс-
вечивается.

                Команды, уникальные для BWCC
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Отсутствуют.

                    Уведомления, наследуемые
          из стандартных управляющих элементов Windows
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                      Сообщение BN_CLICKED
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Командная кнопка посылает данное сообщение, когда она "нажи-
мается" пользователем  с помощью кнопки "мыши" при перемещении на
нее указателя или с помощью следующих действий клавиатуры:

     - Пользователь нажимает клавишу пробела или Enter при  пере-
       мещении на кнопку фокуса.

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

     Чтобы связать с командной кнопкой оперативную  клавишу,  по-
местите перед  значением  ASCII  клавиши  текста  кнопки символ &
(например, "&Yes").  Заметим, что регистр буквы здесь значения не
имеет.

              Уведомления, уникальные для BWCC
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Следующие уведомления  посылаются  порождающему окну только,
если программист задал стиль BBS_PARENTNOTIFY.

     - BBN_SETFOCUS
     - BBN_SETFOCUSMOUSE
     - BBN_GOTATAB
     - BBN_GOTABTAB

                        BBN_SETFOCUS
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Командная кнопка посылает это уведомление своему порождающе-
му окну,  когда  с  помощью действий,  отличных от нажатия кнопки
"мыши", на него перемещается фокус.

                      BBN_SETFOCUSMOUSE
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Командная кнопка посылает это уведомление своему порождающе-
му окну, когда на него перемещается фокус с помощью нажатия кноп-
ки "мыши".

                         BBN_GOTATAB
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

                        BBN_GOTABTAB
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Командная кнопка посылает это уведомление своему порождающе-
му окну,  когда  пользователь  нажимает клавишу клавиши Shift-Tab
(обратная табуляция), а фокус находится на командной кнопке. Пос-
ле  этого  порождающее  окно  может вмешаться в обработку нажатия
клавиши, возвращая ненулевое значение.

                    Сообщение WM_DRAWITEM
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Если вы задали для командной кнопки стиль BBS_OWNERDRAW, она
посылает своему порождающему окну сообщение WM_DRAWITEM, Параметр
lParam  этого  сообщения  содержит  указатель  far  на  структуру
DRAWITEMSTRUCT.

     Поля данной структуры описываются в документации SDK Windows
по данному сообщению, но здесь внесены следующие усовершенствова-
ния:

     Для автоматических   кнопок  с  независимой  фиксацией  поле
itemID     структуры     DRAWITEMSTRUCT     содержит     значение
BS_AUTOCHECKBOX.   В   противном  случае  оно  содержит  значение
BS_CHECKBOX.

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

      CtlType      ODT_BUTTON

      CtlID        Идентификатор управляющего элемента для кнопки
                   (GetWindowWord(hWnd, GWW_ID)).

      itemAction   ODA_DRAWENTIRE, пока не  изменение  фокуса  не
                   приведет к переотображению. В этом случае поле
                   содержит ODA_FOCUS.

      itemState    Комбинация следующих  значений, в  зависимости
                   текущего состояния командной кнопки:

                   ODS_FOCUS      если  с помощью  клавиатуры  на
                                  кнопку перемещен фокус.
                   ODS_DISABLED   если кнопка запрещена.
                   ODS_SELECTED   если командная кнопка подсвече-
                                  на.

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

      hDC          Контекст устройства для окна.  Все значения  в
                   состоянии по умолчанию возвращаются GetDC.

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

                Управляющий элемент BORSHADE
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Функция: панели и разделители.

     Имя класса: "borshade" (SHADE_CLASS)

                         Стили окна
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                      Типы, наследуемые из
            стандартных управляющих элементов Windows
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Отсутствуют.

                    Типы, уникальные для BWCC
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                            BSS_GROUP
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Этот стиль рисует "рельефный" серый блок.

                          BSS_HDIP
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данный стиль рисует горизонтальную разделительную линию, ко-
торая может использоваться для разделения частей диалогового окна.

                          BSS_VDIP
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данный стиль рисует вертикальную разделительную линию, кото-
рая может использоваться для разделения частей диалогового окна.

                          BSS_HBUMP
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данный стиль рисует горизонтальную разделительную линию, ко-
торая может использоваться для разделения частей серой тени груп-
пы (BSS_GROUP).

                          BSS_VBUMP
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данный стиль рисует вертикальную разделительную линию, кото-
рая может использоваться для разделения частей серой тени  группы
(BSS_GROUP).

                          Сообщения
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Отсутствуют.

                   Диалоговый класс BORDLG
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Функция: быстрый вывод диалогового блока ("турбо" вывод).

     Имя класса: "bordlg" (BORDLGCLASS)

     Устраняя ненужные статические управляющие окна,  поддерживая
в диалоговом окне свой  собственный  частный  список  управляющих
элементов  и  отображая сами элементы,  данный специализированный
класс диалогового окна реализует "турбо отображение"  специализи-
рованных управляющих  элементов  Borland.  Он также автоматически
обеспечивает трафаретный фон VGA и вывод с  высоким  разрешением.
Если вы хотите, чтобы ваши диалоги имели "представление Borland",
то этот диалоговый класс нужно  задать  в  трафарете  диалогового
блока.

                         Стили окна
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                      Типы, наследуемые из
            стандартных управляющих элементов Windows
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Все допустимые типы стандартного диалогового окна Windows.

                    Типы, уникальные для BWCC
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Отсутствуют.

Использование управляющих элементов BWCC в недиалоговых окнах
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

      Если вы хотите,  чтобы недиалоговые окна выглядели как окна
BorDlg  (с серо-стальным фоном и светло-серым фоном для статичес-
ких управляющих элементов),  BWCC.DLL предоставляет две  функции,
которые  заменяют  стандартную  оконные  функции  Windows "Def" и
должны вызываться вместо них:

     - для дочерних окон MDI вместо стандартной  функции  Windows
       DefMDIChildProc вызывайте BWCCDefMDIChildProc.

     - Для  всех  других  окон вместо стандартной функции Windows
       DefWindowProc вызывайте BWCCDefWindowProc.

     Как мы описали ранее для BWCCDefDlgProc, ваша оконная проце-
дура для следующих сообщений:

     - WM_CTLCOLOR
     - WM_NCCREATE
     - WM_CREATE
     - WM_NCDESTROY
     - WM_SETFONT
     - WM_PAINT
     - WM_ERASEBKGND

должна вызывать BWCCDefMDIChildProc или BWCCDefWindowProc.

           Примечание: Для  DefFrameProc  BWCC не предусматривают
      функциональной замены.

                       Прочие функции
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     BWCC.DLL экспортирует  три  дополнительные функции,  которые
могут оказаться для ваc полезными.

                   Функция BWCCGetVersion
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данная не  требующая  параметров  функция возвращает текущую
версию BWCC.DLL.  Возвращаемое значение определяется в BWCC.H как
BWCCVERSION.

                   Функция BWCCGetPattern
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данная не требующая параметров функция возвращает  описатель
для кисти, используемой для закраски фона диалогов класса BorDlg.
Поскольку эта кисть не может быть трафаретной кистью, перед выбо-
ром  ее  в  контексте устройства вы можете выровнять ее с помощью
вызова UnrealizeObject и SetBrushOrg. Не удаляйте эту кисть вызо-
вом DeleteObject!

                   Функция BWCCMessageBox
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Данная функция, совместимая по вызову со стандартной функци-
ей Windows MessageBox,  выводит диалоговое окно, согласующееся со
стилем диалогового типа Borland.



Яндекс цитирования