Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Borland C++ 3.0

                           Глава 5. Создание меню
       -----------------------------------------------------------------

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

                              -----------------¬
                              ¦-New------------¦  Новый
                              ¦ Open           ¦  Открыть
                              +----------------+
                              ¦ Save           ¦  Сохранить
                              ¦ Save as...     ¦  Сохранить как
                              +----------------+
                              ¦ Print          ¦  Печать
                              +----------------+
                              ¦ Exit           ¦  Выход
                              L-----------------

            Рис. 5.1 Типичное меню File

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

                  Примечание: О функции  TrackPopupWindow рассказывается
             в документации, поставляемой с компилятором и в "Cправочном
             руководстве программиста для Microsoft Windows".

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

            - запуск редактора меню;
            - настройку меню;
            - проверку меню;
            - сохранение меню.

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

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

            Если хотите,   можете   открыть   демонстрационный    проект
       RWDEMO.RC, щелкнуть  кнопкой "мыши" на ресурсе меню и попробовать
       работу со средствами, о которых вы прочтете в данной главе.

                            Экран редактора меню
       -----------------------------------------------------------------

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


            Пакет разработчика  ресурсов  при открытии демонстрационного
       проекта RWPDEMO.RC выводит следующий экран:

       ----T---------------------------------------------------T---T---¬
       ¦ - ¦           Resource Workshop - rwpdemo.rc          ¦ ^ ¦ v ¦
       +---+---------------------------------------------------+---+---+
       ¦   File Edit Resource Menu View Window Help                    ¦
       +---T---------------------------------------------------T---T---+
       ¦ - ¦                    MENU : men_Main                ¦ ^ ¦ v ¦
       +---+----------------T---T------------------------------+---+---+
       ¦-------------------¬¦ - ¦       TEST MENU : men_Main           ¦
       ¦¦Item text         ¦+---+--------------------------------------+
       ¦¦-----------------¬¦¦File Edit Resource Menu View Window Help  ¦
       ¦¦L-----------------¦+------------------------------------------+
       ¦L-------------------¦                                          ¦
       ¦-------------------¬¦                                          ¦
       ¦¦Item id           ¦¦                                          ¦
       ¦¦--------¬--------¬¦¦                                          ¦
       ¦¦L--------L--------¦L----T-----------------------------------T-+
       ¦L-------------------     ¦               man_Men             ¦^¦
       ¦ Item type  Break before +-----------------------------------+-+
       ¦                         ¦-POPUP-"&File"---------------------¦-¦
       ¦ >*Pop-up   >*No break   ¦   MENUITEM "&New"                 ¦-¦
       ¦ <Menu item < Menu bar   ¦   MENUITEM "&Open"                ¦-¦
       ¦ < Separator   break     ¦   MENUITEM SEPARATOR              ¦-¦
       ¦            < Menu break ¦   MENUITEM "&Save"                ¦-¦
       ¦            < Help break ¦   MENUITEM "Save&as..."           ¦-¦
       ¦                         ¦   MENUITEM SEPARATOR              ¦-¦
       ¦ Initial state           ¦   MENUITEM "&Print"               ¦-¦
       ¦                         ¦   MENUITEM SEPARATOR              ¦-¦
       ¦ >*Enabled               ¦   MENUITEM "E&xit"                ¦-¦
       ¦ < Disabled П Checked    ¦__EndPopup__                       +-+
       ¦ < Grayed                ¦POPUP "&Edr"                       ¦v¦
       +-------------------------+-----------------------------------+-+
       ¦ Ready                   ¦                                     ¦
       L-------------------------+--------------------------------------

            Рис. 5.2 Редактор меню с меню RPWDEMO

            Resource Workshop - rwpdemo.rc - Пакет  разработчика  ресур-
       сов,  файл rwpdemo.rc;  File - файл;  Edit - редактор; Resource -
       ресурс; Menu - меню; View - просмотр; Window - окно; Help; справ-
       ка; Item text - текст элемента меню; Item id - идентификатор эле-
       мента; Item type - тип элемента; Break before - разрыв до; Pop-up
       - вплывающее;  No  break - нет разрыва;  Menu item break - разрыв
       элемента меню; Menu bar - строка меню;  Separator - разделитель;
       Menu break - разрыв меню; Help break - разрыв Help; Initial state
       - начальное состояние; Enabled - разрешено; Disabled - запрещено;
       Checked - установлено;  Grayed - выводится серым цветом
                             Область схемы меню
       -----------------------------------------------------------------

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

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

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

            - В любом другом месте окна можно использовать клавиши Ctrl+
              стрелка вверх и Ctrl+стрелка вниз.

            - При  наличии "мыши" вы можете выделить команду меню в про-
              верочном меню.  При этом вы переместитесь на ту же команду
              в схеме.

            Для перемещения между диалоговым окном и областью схемы мож-
       но использовать клавиши F6 или Shift+F6.

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

                          Область диалогового окна
       -----------------------------------------------------------------

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

            Для перемещения  в  диалоговом  окне  вы можете использовать
       "мышь" (позиционируя ее курсор и делая выбор) или клавиши.

            - Клавиши Tab и Shift+Tab позволяют вам  перемещаться  между
              группами  (такими как Item Type и Break before). Текстовый
              блок (Item text) также считается группой.

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

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

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

            - для ввода изменений нажмете клавишу Enter;

            - либо для ввода изменения и вставки нового элемента выбери-
              те команду Menu¦New Menu Item (Меню¦Новый элемент меню);

            - либо используете клавиши Ctrl+стрелка вниз или Ctrl+стрелка
              вверх для перемещения к другому элементу схемы;

            - либо  нажмете  Ctrl+P или выберите команду Menu¦New Pop-up
              (Меню¦Новое всплывающее меню )для включения нового  всплы-
              вающего меню;

            - либо   нажмете   Ctrl+S   или  выберите  команду  Menu¦New
              Separator (Меню¦Новый разделитель) для вставки нового раз-
              делителя.

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

                  Параметры диалогового окна редактора меню  Таблица 5.1
       ------------------------T---------------------------------------¬
       ¦   Параметр            ¦       Описание                        ¦
       +-----------------------+---------------------------------------+
       ¦   Item text           ¦ Имя команды меню  или  коман
ды  вывода¦
       ¦   (текст элемента)    ¦ всплывающего   меню  и  необязательное¦
       ¦                       ¦ описание  его  акселератора  (если  он¦
       ¦                       ¦ имеется).                             ¦
       ¦                       ¦                                       ¦
       +-----------------------+---------------------------------------+
       ¦   Item ID             ¦ Уникальный идентификатор элемента  ме-¦
       ¦   (идентификатор      ¦ ню. Данный параметр применяется только¦
       ¦   элемента)           ¦ к элементам меню, но не к командам вы-¦
       ¦                       ¦ вода всплывающего меню или  разделите-¦
       ¦                       ¦ лям.                                  ¦
       ¦                       ¦                                       ¦
       +-----------------------+---------------------------------------+
       ¦   Item Type           ¦ Это может быть всплывающее меню,  эле-¦
       ¦   (тип элемента)      ¦ мент меню или разделитель меню.       ¦
       ¦                       ¦                                       ¦
       +-----------------------+---------------------------------------+
       ¦   Break Before        ¦ Управляет форматом команд меню в стро-¦
       ¦   (разрыв до)         ¦ ле меню и во вплывающих меню. Выберите¦
       ¦                       ¦ один из следующих параметров:         ¦
       ¦                       ¦                                       ¦
       ¦     No Break          ¦ Перед командой разрыва нет.           ¦
       ¦     (нет разрыва)     ¦                                       ¦
       ¦                       ¦                                       ¦
       ¦     Menu Break        ¦ Начинает новую  строку в  строке  меню¦
       ¦     (разрыв меню)     ¦ или новый столбец во всплывающем меню.¦
       ¦                       ¦                                       ¦
       ¦     Menu Bar Break    ¦ Начинает новую строку  в  строке меню.¦
       ¦     (разрыв строки    ¦ Во   вплывающем  меню  начинает  новый¦
       ¦     меню)             ¦ столбец и рисует  вертикальную  линию,¦
       ¦                       ¦ разделяющую столбцы.                  ¦
       ¦                       ¦                                       ¦
       ¦     Help Break        ¦ Смещает элемент меню в строке  меню  в¦
       ¦     (разрыв Help)     ¦ крайнюю   правую  позицию. Используйте¦
       ¦                       ¦ данный параметр только в элементах ме-¦
       ¦                       ¦ ню верхнего уровня.                   ¦
       ¦                       ¦                                       ¦
       +-----------------------+---------------------------------------+
       ¦   Initial State       ¦ Параметры Enabled, Disabled  и  Grayed¦
       ¦   (начальное          ¦ в  левом  столбце  представляют  собой¦
       ¦   состояние)          ¦ кнопки с  зависимой  фиксацией  (можно¦
       ¦                       ¦ выбрать только один из  них).  Checked¦
       ¦                       ¦ box  - это кнопки с независимой фикса-¦
       ¦                       ¦ цией,которые можно устанавливать неза-¦
       ¦                       ¦ висимо.  Например, вы можете выбрать и¦
       ¦                       ¦ Enabled, и Checked.                   ¦
       ¦                       ¦                                       ¦
       +-----------------------+---------------------------------------+
       ¦   Enabled             ¦ Команда работает,  когда  пользователь¦
       ¦   (разрешена)         ¦ ее выбирает.                          ¦
       ¦                       ¦                                       ¦
       +-----------------------+---------------------------------------+
       ¦   Disabled            ¦ Запрещает   команду.  Пользователь  не¦
       ¦   (запрещена)         ¦ сможет различить параметры  Enabled  и¦
       ¦                       ¦ Disabled. В меню они выглядят одинако-¦
       ¦                       ¦ во.                                   ¦
       ¦                       ¦                                       ¦
       +-----------------------+---------------------------------------+
       ¦   Grayed              ¦ Запрещает команду. Текст выводится се-¦
       ¦   (серый)             ¦ рым цветом. Благодаря этому пользоват-¦
       ¦                       ¦ тель может узнать, что данная  команда¦
       ¦                       ¦ сейчас недоступна.                    ¦
       ¦                       ¦                                       ¦
       +-----------------------+---------------------------------------+
       ¦   Checked             ¦ Помещает метку после команды.  Выбери-¦
       ¦   (выбрана)           ¦ те  данный параметр, если  элемент бу-¦
       ¦                       ¦ дет функционировать,   как  переключа-¦
       ¦                       ¦ тель, и вы хотите, чтобы его начальное¦
       ¦                       ¦ состояние было включенным.            ¦
       L-----------------------+----------------------------------------
                            Область проверки меню
       -----------------------------------------------------------------

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

                        ----T--------------------------------------¬
                        ¦ - ¦       TEST MENU : men_Main           ¦
                        +---+---T----------------------------------+
                        ¦Pop-up ¦                                  ¦
                        +-------+----------------------------------+
                        ¦Item---¦                                  ¦
                        +--------                                  ¦
                        ¦                                          ¦
                        L-------------------------------------------

            Рис. 5.3 Вновь созданное меню

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

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

                                Параметры View               Таблица 5.2
       ---------------------------T------------------------------------¬
       ¦   Выбор меню             ¦ Описание                           ¦
       +--------------------------+------------------------------------+
       ¦   View as Pop-up         ¦ Управляет выводом  меню  по  строке¦
       ¦   (просмотр, как         ¦ меню или в виде всплывающего меню. ¦
       ¦   всплывающего меню)     ¦                                    ¦
       ¦                          ¦ Если данный параметр не  установлен¦
       ¦                          ¦ (по умолчанию), то проверочное меню¦
       ¦                          ¦ выводится по  строке  меню.  Данный¦
       ¦                          ¦ параметр прекрасно  действует, если¦
       ¦                          ¦ вы работаете со  всем  меню  сразу,¦
       ¦                          ¦ поскольку  верхний  уровень  вашего¦
       ¦                          ¦ меню выводится в программе по стро-¦
       ¦                          ¦ ке меню.                           ¦
       ¦                          ¦                                    ¦
       ¦                          ¦ Однако, если вы разрабатываете меню¦
       ¦                          ¦ как отдельный ресурс, и текущее ме-¦
       ¦                          ¦ ню,  с которым вы работаете, предс-¦
       ¦                          ¦ тавляет собой всплывающее или  пла-¦
       ¦                          ¦ вающее меню, вы можете видеть его в¦
       ¦                          ¦ том виде,  как оно фактически выво-¦
       ¦                          ¦ дится.  В этом случае выберите дан-¦
       ¦                          ¦ ный параметр для  проверки  меню  в¦
       ¦                          ¦ виде всплывающего меню. В провероч-¦
       ¦                          ¦ ном меню выводится  команда Pop-up,¦
       ¦                          ¦ и  вы  выбираете  Pop-up для вывода¦
       ¦                          ¦ самого меню.                       ¦
       ¦                          ¦                                    ¦
       +--------------------------+------------------------------------+
       ¦   First graphic          ¦ Данная графика представляет исполь-¦
       ¦   (первая графика)       ¦ зуемую  по  умолчанию  конфигурацию¦
       ¦                          ¦ областей. При этом проверочное меню¦
       ¦                          ¦ выводится по области схемы и справа¦
       ¦                          ¦ от диалогового окна.               ¦
       ¦                          ¦                                    ¦
       +--------------------------+------------------------------------+
       ¦   Second graphic         ¦ Выберите данный параметр для вывода¦
       ¦   (вторая графика)       ¦ проверочного меню по окну  редакти-¦
       ¦                          ¦ рования, как обычной строки меню.  ¦
       ¦                          ¦                                    ¦
       L--------------------------+-------------------------------------


            На следующем рисунке показан редактор меню  в альтернативном
       формате (при включении параметра Second graphic):

       ----T---------------------------------------------------T---T---¬
       ¦ - ¦           Resource Workshop                       ¦ ^ ¦ v ¦
       +---+---------------------------------------------------+---+---+
       ¦   File Edit Resource Menu View Window Help                    ¦
       +---T---------------------------------------------------T---T---+
       ¦ - ¦                    MENU : MENU_1                  ¦ ^ ¦ v ¦
       +---+---------------------------------------------------+---+-T-+
       ¦ - ¦                 TEST MENU: MENU_1                       ¦-¦
       +---+---------------------------------------------------------+ ¦
       ¦ Pop-up                                                      ¦ ¦
       ¦                                                             ¦ ¦
       ¦                                                             ¦ ¦
       +-------------------------T--------------------------------T-¬¦ ¦
       ¦-----------------------¬ ¦              MENU_1            ¦^¦¦ ¦
       ¦¦Item text             ¦ +--------------------------------+-+¦ ¦
       ¦¦---------------------¬¦ ¦-POPUP-"Pop-up"-----------------¦-¦¦ ¦
       ¦¦¦ Pop-up             ¦¦ ¦   MENUITEM "&Item"             ¦-¦¦ ¦
       ¦¦L---------------------¦ ¦   __EndPopup__pen"             ¦-¦¦ ¦
       ¦L----------------------- ¦                                ¦-¦¦ ¦
       ¦-----------------------¬ ¦                                ¦-¦¦ ¦
       ¦¦Item id               ¦ ¦                                ¦-¦¦ ¦
       ¦¦--------¬------------¬¦ ¦                                ¦-¦¦ ¦
       ¦¦L--------L------------¦ ¦                                ¦-¦¦ ¦
       ¦L----------------------- ¦                                ¦-¦¦ ¦
       ¦ Item type  Break before ¦                                ¦-¦¦ ¦
       ¦                         ¦                                ¦-¦¦ ¦
       ¦ >*Pop-up   >*No break   ¦                                ¦-¦¦ ¦
       ¦ <Menu item < Menu bar   ¦                                ¦-¦¦ ¦
       ¦ < Separator   break     ¦                                ¦-¦¦ ¦
       ¦            < Menu break ¦                                ¦-¦¦ ¦
       ¦            < Help break ¦                                ¦-¦¦ ¦
       ¦                         ¦                                ¦-¦¦ ¦
       ¦ Initial state           ¦                                ¦-¦¦ ¦
       ¦                         ¦                                +-+¦ ¦
       ¦ >*Enabled               ¦                                ¦v¦¦ ¦
       ¦ < Disabled   П Checked  +-T----------------------------T-+-+¦ ¦
       ¦ < Grayed                ¦>¦----------------------------¦<¦ ¦¦ ¦
       +-------------------------+-+----------------------------+-+-++-+
       ¦ Ready                   ¦                                     ¦
       L-------------------------+--------------------------------------

            Рис. 5.4 Редактор меню в альтернативном формате

            Resource Workshop - rwpdemo.rc - Пакет  разработчика  ресур-
       сов,  файл rwpdemo.rc;  File - файл;  Edit - редактор; Resource -
       ресурс; Menu - меню; View - просмотр; Window - окно; Help; справ-
       ка; Item text - текст элемента меню; Item id - идентификатор эле-
       мента; Item type - тип элемента; Break before - разрыв до; Pop-up
       -  вплывающее;  No break - нет разрыва;  Menu item break - разрыв
       элемента меню;  Menu bar - строка меню;  Separator - разделитель;
       Menu break - разрыв меню; Help break - разрыв Help; Initial state
       - начальное состояние; Enabled - разрешено; Disabled - запрещено;
       Checked - установлено; Grayed - выводится серым цветом


                            Запуск редактора меню
       -----------------------------------------------------------------

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


                            Создание нового меню
       -----------------------------------------------------------------

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

            1. Убедитесь,  что вы уже открыли проект,  к которому хотите
               добавить меню. Для создания нового проекта вы можете выб-
               рать  команду  File¦New  Project  (Файл¦Новый проект) для
               создания нового проекта или File¦Open (Файл¦Открытие) для
               открытия существующего.

            2. Когда  вы  откроете  новый проект,  выберите Resource¦New
               (Ресурс¦Новый) для создания нового  ресурса  для  данного
               проекта.  Выводится  диалоговое  окно New Resource (Новый
               ресурс).

            3. В диалоговом окне New Resource прокрутите список Resource
               Type (Тип ресурса) до MENU, затем дважды щелкните кнопкой
               "мыши" на MENU или щелкните на нем кнопкой "мыши",  затем
               активизируйте кнопку OK.

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

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

            - Дважды щелкните кнопкой "мыши" на имени меню в окне проек-
              та.

            - Подсветите  имя  меню  и  выберите  команду  Resource¦Edit
              (Ресурс¦Редактирование).

                            ----T-----------------------------T-T-¬
                            ¦ - ¦     rwpdemo.rc              ¦v¦^¦
                            +---+-----------------------------+-+-+
                            ¦ BITMAP                            ¦^¦
                            ¦    BITMAP_1                       +-+
                            ¦    bmp_StatusLine                 ¦-¦
                            ¦ MENU                              ¦-¦
                            ¦    menu_Man-----------------------¦-¦
                            ¦ DIALOG                            ¦-¦
                            ¦    DIALOG_5                       ¦-¦
                            ¦    dlg_Open                       +-+
                            ¦    dlg_SaveAs                     ¦v¦
                            L-----------------------------------+--

            Рис. 5.5 Окно проекта RWPDEMO

                  Примечание: Подробнее об открытии проектов рассказыва-
              ется в Главе 3.

             Пакет разработчика  ресурсов  выводит  окно с загруженным в
       него меню, которое вы выбрали.

                  Примечание: Пример данного экрана см.  на Рис. 5.2 или
             в начале главы.


                               Настройка меню
       -----------------------------------------------------------------

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

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

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

                                    ------------------------------------¬
        Новое сплывающее меню       ¦-New-pop-up----------------Ctrl+P--¦
        Новый элемент меню          ¦ New menu item             Ins     ¦
        Новый разделитель           ¦ New separator             Ctrl+S  ¦
                                    +-----------------------------------+
        Новое всплывающее меню file ¦ New file pop-up                   ¦
        Новое всплывающее меню edit ¦ New edit pop-up                   ¦
        Новое всплывающее меню help ¦ New help pop-up                   ¦
                                    +-----------------------------------+
        Проверить дублирование      ¦ Check duplicate                   ¦
                                    L------------------------------------

            Рис. 5.6 Меню Menu

            Используйте данное  меню для вставки новых команд меню,  ко-
       манд вывода всплывающих меню и разделителей меню. Вы можете также
       включить полные  стандартные  всплывающие меню File (Файл),  Edit
       (Редактирование) или Help (Справка) и проверить ваше меню на дуб-
       лирование идентификаторов  (подробнее  об этом рассказывается ни-
       же).


                          Перемещение и копирование
       -----------------------------------------------------------------

            В меню Edit для перемещения и копирования операторов в схеме
       меню редактора меню вы можете использовать команды  Cut  (Выреза-
       ние), Copy (Копирование) и Paste (Вставка).

            Подсветите оператор,  который вы хотите переместить или ско-
       пировать, затем выберите команду Edit¦Cut (Редактирование¦Выреза-
       ние) или Edit¦Copy (Редактирование¦Копирование). Затем подсветите
       оператор, после которого вы хотите вставить  строку,  и  выберите
       команду Paste (Вставка).

                  Примечание: Команда  Edit¦Cut  удаляет выделенный эле-
             мент, но позволяет вам вставить его в другом месте.

                           Отмена в случае ошибок
       -----------------------------------------------------------------

            Как и  при  работе с другими редакторами Пакета разработчика
       ресурсов, редактор меню позволяет вам отменять изменения и выпол-
       нять их повторно.  Для этого выберите команду Edit¦Undo (Редакти-
       рование¦Отмена) или Edit¦Redo (Редактирование¦Повтор) или исполь-
       зуйте  акселераторы  Alt+пробел (отмена) и Shift+Alt+пробел (пов-
       тор).

            Например, если вы ошибочно заменили элемент меню на раздели-
       тель, то  можно  выбрать  команду  Edit¦Undo.  Пакет разработчика
       ресурсов. Пакет разработчика ресурсов указывает,  какое изменение
       отменяется (в  этом  случае  он  выводит  сообщение  "Undo change
       item" - "отмена изменения элемента"). Для отмены изменения нажми-
       те  клавишу  Enter,  щелкните  кнопкой "мыши" на Undo или нажмите
       клавиши Alt+пробел.

                           Настройка элемента меню
       -----------------------------------------------------------------

            Элемент (или  команда)  меню вызывает инициализацию действия
       прикладной программы (в отличие от  команды  вывода  всплывающего
       меню, которое просто выводит меню). Обычно команды меню содержат-
       ся во всплывающих меню.  Например, в большинстве прикладных прог-
       рамм Windows,  если  вы выберите команду вывода всплывающего меню
       File (Файл),  она выводит всплывающее меню, из которого вы можете
       выбрать команду Open (Открыть).

                  Примечание: Элементы  строки  меню обычно представляют
             собой команды вывода всплывающего меню.

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

                             Новые элементы меню
       -----------------------------------------------------------------

            Следующий шаг в создании элемента меню состоит в определении
       того, куда его включить.

                      Выбор места вставки нового элемента

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

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

            Предположим, например,  что  вы хотите добавить к следующему
       меню две команды:  новую команду Stored order во всплывающем меню
       Arrange List,  и  команду  Quit,  которая выводится в строке меню
       после Widgets.
                 ----T--------------------------------------¬
                 ¦ - ¦       TEST MENU: MENU_1              ¦
                 +---+--------------------------------------+
                 ¦Widgets-                                  ¦
                 +---------------------T--------------------+
                 ¦-List---------Ctrl+L-¦                    ¦
                 ¦ Add...       Ctrl+A ¦                    ¦
                 +---------------------+                    ¦
                 ¦ Arrange List       <¦                    ¦
                 +----------------------                    ¦
                 ¦                                          ¦
                 ¦                                          ¦
                 L-------------------------------------------

            Рис. 5.7 Меню Widgets

                     ---------------------------------------T-¬
                     ¦              MENU_1                  ¦^¦
                     +--------------------------------------+-+
                     ¦ POPUP "&Widgets"                     ¦-¦
                     ¦---MENUITEM-"&List\tCtrl+L"-----------¦-¦
                     ¦   MENUITEM "&Add...\tCtrl+A"         ¦-¦
                     ¦   MENUITAM SEPARATOR                 ¦-¦
                     ¦   POPUP "A&rrange List"              ¦-¦
                     ¦      MENUITEM "&Ascending\tCtrl+F2"  ¦-¦
                     ¦      MENUITEM "&Descending\tCtrl+F3" ¦-¦
                     ¦   __EndPopup__                       ¦-¦
                     ¦ __EndPopup__                         ¦-¦
                     ¦               __EndMenu__            ¦-¦
                     ¦                                      ¦-¦
                     ¦                                      +-+
                     ¦                                      ¦v¦
                     +-T----------------------------------T-+-+
                     ¦>¦----------------------------------¦<¦ ¦
                     L-+----------------------------------+-+--

            Рис. 5.8 Схема записей для меню Widgets

            Добавить команду Stored Order достаточно просто. Нужно найти
       оператор POPUP "Arrange List...",  а затем решить, куда нужно по-
       местить новую команду вывода всплывающего меню.

            - Чтобы  она  стала первой командой, нужно переместить подс-
              ветку на POPUP "Arrange List..." и добавить команду.

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

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

            Редактор меню указывает на начало всплывающего меню операто-
       ром POPUP, а на конец - оператором _END POPUP_. Так как всплываю-
       щее меню  Aggange  List  встроено во сплывающее меню Widgets,  то
       присутствует два оператора _END POPUP_. В схеме встроенное всплы-
       вающее  меню  выровнено с отступом относительно того всплывающего
       меню,  в которое оно встроено. Благодаря этому легко увидеть, ка-
       кое  меню  встроено  в другое и найти соответствующий завершающий
       оператор.

            Если  вы  посмотрите на схему меню, то увидите, что оператор
       _END POPUP_ меню Arrange List имеет отступ относительно оператора
       _END POPUP_,  который за ним следует.  Второй оператор  завершает
       всплывающее меню Widgets.


            Чтобы добавить команду Quit, подсветите второй оператор _ENP
       POPUP_ и добавьте команду. После этого схема меню будет выглядеть
       следующим образом:

       ----T---------------------------------------------------T---T---¬
       ¦ - ¦                  MENU : MENU_1                    ¦ ^ ¦ v ¦
       +---+------------------T---T----------------------------+---+---+
       ¦---------------------¬¦ - ¦       TEST MENU : MENU_1           ¦
       ¦¦Item text           ¦+---+------------------------------------+
       ¦¦-------------------¬¦¦-Widgets---                             ¦
       ¦¦¦&Ascending\tCtrl+F¦¦+--------------------T-------------------+
       ¦¦L-------------------¦¦ List        Ctrl+L ¦                   ¦
       ¦L---------------------¦ Add...      Ctrl+A ¦                   ¦
       ¦---------------------¬+------------------T-+------------------¬¦
       ¦¦Item id             ¦¦-ArrangeList------¦-Ascending--Ctrl+F2-¦¦
       ¦¦----------¬--------¬¦+------------------+ Descending Ctrl+F3 ¦¦
       ¦¦¦wmnnu_Asc¦¦103    ¦¦¦                  L---------------------¦
       ¦¦L----------L--------¦¦                                        ¦
       ¦L---------------------L--T-----------------------------------T-+
       ¦ Item type  Break before ¦               MENU_1              ¦^¦
       ¦                         ¦POPUP "&Widgets"                   +-+
       ¦ < Pop-up   >*No break   ¦--MENUITEM-"&List\tCtrl+L"---------¦-¦
       ¦>*Menu item < Menu bar   ¦  MENUITEM "&Add...\tCtrl+A"       ¦-¦
       ¦ < Separator   break     ¦  MENUITAM SEPARATOR               ¦-¦
       ¦            < Menu break ¦  POPUP "A&rrange List"            ¦-¦
       ¦            < Help break ¦    MENUITEM "&Ascending\tCtrl+F2" ¦-¦
       ¦-------------------------¦    MENUITEM "&Descending\tCtrl+F3"¦-¦
       ¦ Initial state           ¦  __EndPopup__                     ¦-¦
       ¦                         ¦__EndPopup__                       ¦-¦
       ¦ >*Enabled               ¦              __EndMenu__          ¦-¦
       ¦ < Disabled   П Checked  ¦__EndPopup__                       +-+
       ¦ < Grayed                ¦                                   ¦v¦
       ¦                         +-T-------------------------------T-+-+
       ¦                         ¦>¦-------------------------------¦<¦ ¦
       L-------------------------+-+-------------------------------+-+--

            Рис. 5.9 Меню с новыми добавленными элементами

                           Создание элемента меню

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

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

            3. Нажмите клавишу Ins или выберите команду  Choose Menu¦New
               Menu Item (Выбор меню¦Новый элемент меню).  Редактор меню
               создает новый элемент  меню,  дает  ему  используемое  по
               умолчанию  имя ("Item") и используемый по умолчанию иден-
               тификатор меню и подсвечивает его в схеме меню.

            4. Для дальнейшего определения нового элемента меню  исполь-
               зуйте  диалоговое  окно  слева от области схемы меню (см.
               раздел "Использование диалогового окна").

                             Выбор элемента меню
       -----------------------------------------------------------------

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

            1. Переместите на элемент меню подсветку с  помощью  "мыши",
               клавиш Ctrl+стрелка вверх или Ctrl+стрелка вниз, или кла-
               виш стрелок (если вы находитесь в области схемы).

            2. Редактируйте поля диалогового окна.
                       Использование диалогового окна
       -----------------------------------------------------------------

            В диалоговом  окне для позиционирования на том поле, которое
       вы хотите редактировать,  используйте  "мышь"  или  клавиши  Tab,
       Shift+Tab.

                                  Ввод текста

            Поле Item  text  (текст элемента) определяет текст,  который
       выводится в меню.

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

            Если вы  собираетесь  связать  с данной командой оперативную
       клавишу (акселератор),  то можете включить в меню текст акселера-
       тора. Например, если ваша прикладная команда включает акселератор
       Shift+Del, который дублирует команду Cut меню Edit, вы можете до-
       бавить после команды текст "Shift+Del".

            - Для  отделения  заголовка  меню от текста акселератора ис-
              пользуйте символ табуляции  (\t),  например,  &Cut\tShift+
              Del.

            - Для  выравнивания  вправо  текста  акселератора (например,
              &Cut\aShift+Del)  используйте  символ  выравнивания вправо
              (\a).

            Прикладной программы  Windows для указания комбинации клавиш
       обычно используют символ +,  например,  Shift+Del или Strl+Shift+
       F4.

                         Ввод идентификатора элемента

            Все элементы меню должны иметь уникальный числовой идентифи-
       катор (Item ID).  Пакет разработчика ресурсов создает  уникальное
       используемое по  умолчанию  значение идентификатора для элементов
       меню. Вы можете ввести уникальное числовое значение или  уникаль-
       ное имя.

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

                  Примечание: Подробнее об идентификаторах рассказывает-
             ся в Главе 3.

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

                       Другие параметры диалогового окна

            Большая часть   параметров  диалогового  окна  поясняется  в
       Таблице 5.1.  Остается только параметре Checked (Выбран), который
       применяется только  к  элементам  меню и помещает метку выбора на
       том элементе,  который включен или выключен.  Метка выбора  будет
       выводиться, если параметр Checked установлен.

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

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

                  Примечание: Меню View подробнее описывается выше.


                     Настройка команд всплывающего меню
       -----------------------------------------------------------------

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

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

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

                             Выбор места включения
                    новой команды вывода всплывающего меню

            Команду вывода всплывающего меню вы можете включить в  верх-
       ний уровень своего меню. При этом она выводится в строке меню. Вы
       можете также встроить команды вывода всплывающего меню  в  другие
       всплывающие меню  (как  показано  в  примере  меню на Рис.  5.7).
       Widget - это команда вывода всплывающего  меню  верхнего  уровня,
       поэтому она  выводится  в  строке  меню.  Всплывающее меню Widget
       включает в себя команды меню,  а также встроенную команды  вывода
       всплывающего меню Arrange List.

            Будет ли команда вывода всплывающего меню выводиться в стро-
       ке меню,  или встраиваться в другое всплывающее меню,  зависит от
       того, куда вы его включите.  См. выше раздел "Выбор места включе-
       ния нового элемента меню".

               Добавление новой команды вывода всплывающего меню

            Для добавления новой команды вывода всплывающего  меню нужно
       выполнить следующие основные шаги:

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

            2. Нажмите клавиши Ctrl+P или выберите команду Menu¦New Pop-
               up (Меню¦Новый элемент всплывающего меню).

            3. Для дальнейшего определения команды  вывода  всплывающего
               меню  используйте  окно в левой части редактора меню (см.
               ниже раздел "Использование диалогового окна").

                   Выбор команды вывода всплывающего меню
       -----------------------------------------------------------------

            1. Переместите на команду вывода всплывающего меню подсветку
               с  помощью  "мыши",   клавиш   Ctrl+стрелка   вверх   или
               Ctrl+стрелка вниз, или клавиш стрелок (если вы находитесь
               в области схемы меню).

            2. Редактируйте поля диалогового окна.

                       Использование диалогового окна
       -----------------------------------------------------------------

            В диалоговом  окне для позиционирования на том поле, которое
       вы хотите редактировать,  используйте  "мышь"  или  клавиши  Tab,
       Shift+Tab.

                                  Ввод текста

            Поле Item  text  (текст элемента) определяет текст,  который
       выводится в меню.

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

            В отличие от элементов меню, команды вывода всплывающих меню
       не имеют клавиш-акселераторов.  Более вероятно связывание акселе-
       ратора с командой во всплывающем меню, чем с самой командой выво-
       да меню.

                       Другие параметры диалогового окна

            Для команд вывода всплывающего меню  устанавливать параметры
       Item ID  и Item Type вам не потребуется,  но вы можете установить
       параметр Break Before (Прерывание до) и параметры  Initial  State
       (Начальное состояние) - Enabled (Разрешен), Disabled (Запрещен) и
       Grayed (Серый),  но не Cheched (Выбран), так как Checked применя-
       ется только к командам меню,  а не к командам вывода всплывающего
       меню.

                  Примечание: Большая часть параметров  диалогового окна
             поясняется в Таблице 5.1.
                        Определение разделителя меню
       -----------------------------------------------------------------

            Разделитель меню (SEPARATOR) - это строка, которая разделяет
       различные группы  выбора во всплывающем меню.  Так как это единс-
       твенная строка в меню,  вы не можете ее настроить,  но можете ре-
       шить, где она должна выводиться и затем создать ее.

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

            Если вы решили, в каком месте требуется разделитель, сделай-
       те следующее:

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

            2. Нажмите клавиши  Ctrl+S  или  выберите  команду  Menu¦New
               Separator (Меню¦Новый разделитель).

            В левой  части  редактора меню никаких параметров устанавли-
       вать не нужно.

                           Удаление оператора меню
       -----------------------------------------------------------------

            Подсветите оператор, который вы хотите удалить, затем нажми-
       те клавишу Del или  выберите  команду  Edit¦Delete  (Редактирова-
       ние¦Удаление) для  его удаления или Edit¦Cut (Удаление¦Вырезание)
       для удаления оператора и копирования его в буфер ("карман").

            Операторы END POPUP удалять нельзя.  Если вы хотите  удалить
       команды вывода  вплывающих  меню и все элементы,  содержащиеся во
       вплывающем меню, то удалите начальный оператор POPUP.

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

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

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

            Редактор меню имеет также встроенное средство отладки, кото-
       рое вы  можете использовать для проверки дублирования идентифика-
       торов элементов  меню.  Если  вы  выберите   команду   Menu¦Check
       Duplicates (Меню¦Проверка дублирования),  редактор меню ищет дуб-
       лирующиеся идентификаторы, и, если он их находит, выводит сообще-
       ние "Duplicate command value found" ("Значение команды дублирует-
       ся").

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

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

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

              1. Для  вывода диалогового окна Identifiers (Идентификато-
                 ры) выберите команду Resource¦Identifiers (Меню¦Иденти-
                 фикаторы).

              2. Прокрутите  вниз  список идентификаторов и найдите тот,
                 который вам нужен.

              3. Активизируйте кнопку Change (Изменение) и наберите  но-
                 вое значение,  которое не противоречит другим идентифи-
                 каторам меню.

              4. Для изменения значения активизируйте кнопку OK или наж-
                 мите клавишу Enter.

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

            Например, в  приводимом  ниже примере меню присваивание зна-
       чения 101 двум идентификаторам - wnmu_List и wmnu_Asc  - приводит
       к тому,  что  Menu¦Check  Duplicates выводит сообщение "Duplicate
       command value found" ("Значение команды дублируется").

            Так как wmnu_Asc - это второй из двух идентификаторов в  ме-
       ню, то редактор меню будет подсвечивать wmnu_Asc. Затем вы можете
       с помощью команды  Resource¦Identifiers  (Ресурсы¦Идентификаторы)
       вывести диалоговое  окно  идентификаторов,  подсветить wmnu_Asc и
       изменить его значение на значение,  отличное  от  101,  102,  104
       (значения других идентификаторов меню).




                            Сохранение изменений
       -----------------------------------------------------------------

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

            - сохранение всего проекта;
            - сохранение ресурса меню в виде файла.


                             Сохранение проекта
       -----------------------------------------------------------------

            Для сохранения  всего  проекта  выберите  команду  File¦Save
       Project (Файл¦Сохранение проекта).  Пакет  разработчика  ресурсов
       компилирует ресурсы,  которые  вы  изменили  со времени последней
       компиляции, а затем сохраняет их в файле проекта.  Измененный ре-
       сурс, связанный с внешним файлом, обновляется во внешнем файле.

                    Сохранение ресурса меню в виде файла
       -----------------------------------------------------------------

            При сохранении всего проекта сохраняется также  ресурс меню,
       к которым вы работаете.  Однако,  если вы хотите сохранить только
       ресурс меню,  то для сохранения ресурса в виде файла можете  выб-
       рать команду  Resource¦Save Resource As (Ресурс¦Сохранение ресур-
       са). Поскольку данный шаг несколько более сложен, чем просто сох-
       ранение проекта,  маловероятно,  что  вы  будете  выполнять его в
       ситуациях, отличных от  первоначального  сохранения  в  отдельном
       файле.

            Чтобы сохранить ресурс в файле, сделайте следующее:

            1. Выберите команду Resource¦Save Resource As.  Пакет разра-
               ботчика ресурсов выводит диалоговое окно Save Resource As
               (Сохранение ресурса):


       ----T-----------------------------------------------------------¬
       ¦ - ¦                     Save resource as                      ¦
       +---+-------------------------------------------T---------------+
       ¦   ------------------------------------------¬ ¦               ¦
       ¦   ¦                  ---------------------¬ ¦ ¦               ¦
       ¦   ¦ New file name    ¦*.rc                ¦ ¦ ¦ ------------¬ ¦
       ¦   ¦                  L--------------------- ¦ ¦ ¦  _        ¦-¦
       ¦   ¦             ------------------------T-¬ ¦ ¦ ¦ V    OK   ¦-¦
       ¦   ¦ File type   ¦ RC resource script    ¦v¦ ¦ ¦ L-------------¦
       ¦   ¦             L-----------------------+=- ¦ ¦   ------------¦
       ¦   L------------------------------------------ ¦               ¦
       ¦                                               ¦               ¦
       ¦   Resource ----menu: menu_1-------------------¦               ¦
       ¦                                               ¦               ¦
       ¦   Path     c:\workshop                        ¦               ¦
       ¦                                               ¦ ------------¬ ¦
       ¦  ---------------------¬---------------------¬ ¦ ¦           ¦-¦
       ¦  ¦ Files              ¦¦ Directories        ¦ ¦ ¦ X  Cancel ¦-¦
       ¦  ¦ ----------------T-¬¦¦ ----------------T-¬¦ ¦ L-------------¦
       ¦  ¦ ¦ + editor.rc   ¦^¦¦¦ ¦ =             ¦^¦¦ ¦   ------------¦
       ¦  ¦ ¦ + menu$.rc    +-+¦¦ ¦ = temp        +-+¦ ¦               ¦
       ¦  ¦ ¦ + myproj.rc   ¦-¦¦¦ ¦ п A           ¦-¦¦ ¦               ¦
       ¦  ¦ ¦ + myresorc.rc ¦-¦¦¦ ¦ п B           ¦-¦¦ ¦               ¦
       ¦  ¦ ¦ + newproj.rc  ¦-¦¦¦ ¦ п C           ¦-¦¦ ¦               ¦
       ¦  ¦ ¦ + rwpdemo.rc  ¦-¦¦¦ ¦ п F           ¦-¦¦ ¦               ¦
       ¦  ¦ ¦ + typical.rc  ¦-¦¦¦ ¦ п G           ¦-¦¦ ¦ ------------¬ ¦
       ¦  ¦ ¦               ¦-¦¦¦ ¦ п H           ¦-¦¦ ¦ ¦           ¦-¦
       ¦  ¦ ¦               +-+¦¦ ¦ п I           +-+¦ ¦ ¦ ?  Help   ¦-¦
       ¦  ¦ ¦               ¦v¦¦¦ ¦ g J           ¦v¦¦ ¦ L-------------¦
       ¦  ¦ L---------------+--¦¦ L---------------+--¦ ¦   ------------¦
       ¦  L---------------------L--------------------- ¦               ¦
       ¦                                               ¦               ¦
       L-----------------------------------------------+----------------

            Рис. 5.10 Диалоговое меню Save Resource As для ресурса меню

            Save resource as - сохранение ресурсов; File type - тип фай-
       ла; Resource - ресурс;  Path - меню; Files - файлы; Directories -
       каталоги

            2. Введите новое имя файла или выберите корректное имя файла
               из списка Files (Файлы).  Если вы хотите поместить файл в
               другой каталог,  то можете  изменить  маршрут  с  помощью
               списка  Directories  (Каталоги)  либо введите маршрут при
               наборе имени файла.  Когда имя  файла  будет  корректным,
               нажмите  клавишу Enter или активизируйте командную кнопку
               OK.

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

            Для работы  с  записью  ресурса меню выделите в окне проекта
       имя меню , щелкнув на нем кнопкой "мыши" и для вывода записи меню
       во встроенном  текстовом редакторе выберите команду Resource¦Edit
       As Text (Ресурс¦Редактировать как текст).

            Например, для редактирования записи ресурса для примера меню
       в конце данной главе вы можете открыть проект,  содержащий данное
       меню, затем подсветить меню и выбрать  команду  Resource¦Edit  As
       Text. Пакет  разработчика ресурсов открывает встроенный текстовый
       редактор и выводит следующий исходный код:

            MENU_1 MENU
            BEGIN
               POPUP "&Widgets"
               BEGIN
                 MENUITEM "&List\tCtrl+L", wmnu_List
                 MENUITEM "&Add...\tCtrl+A", wmnu_Add
                 MENUITAM SEPARATOR
                 POPUP "A&rrange List"
                 BEGIN
                    MENUITEM "&Ascending\tCtrl+F2", wmnu_Asc
                    MENUITEM "&Descending\tCtrl+F3", wmnu_Desc
                 END
              END
            END

                  Примечание: Описание параметров записи меню см.  в ог-
             лавлении оперативного справочника Help.

            Затем для внесения изменений в исходный код  вы  можете  ис-
       пользовать диалоговый редактор. Например, чтобы изменить парамет-
       ры памяти меню с Moveable,  Discardable и Pure (по умолчанию)  на
       Fixed, Nondiscardable и Pure, сделайте следующее:

            1. В  текстовом  редакторе  после  первой строки записи меню
               включите:

               MENU_1 MENU FIXED NONDISCARDABLE PURE

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

               (Если вы  хотите остаться в окне редактирования и скомпи-
               лировать то,  что ввели,  чтобы убедиться в  корректности
               изменений,  можете  вместо закрытия редактора выбрать ко-
               манду Compile¦Compile Now (Компиляция).

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

                  Примечание: Внести  изменения  можно  с помощью выбора
             команды Resource¦Memory Options.

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

            В данном разделе описывается процесс создания очень простого
       меню. Здесь  поясняются все основные моменты использования редак-
       тора меню.

            Предположим вы хотите создать всплывающее меню с  тремя  ко-
       мандами. Первые  две команды позволяют пользователю просматривать
       существующие записи (List) и добавлять новые (Add). Третья коман-
       да, Arrange List (Упорядочивание списка) выводит всплывающее меню
       с двумя дополнительными командами, Ascending (В порядке возраста-
       ния) и Descending (В порядке убывания), которые позволяют пользо-
       вателю выбирать порядок сортировки списка записей.

            Меню построено следующим образом:

                   ----T------------------------------------¬
                   ¦ - ¦       TEST MENU : MENU_1           ¦
                   +---+------------------------------------+
                   ¦ Widget                                 ¦
                   +--------------------T-------------------+
                   ¦ List        Ctrl+L ¦                   ¦
                   ¦ Add...      Ctrl+A ¦                   ¦
                   +------------------T-+------------------¬¦
                   ¦-ArrangeList------¦-Ascending--Ctrl+F2-¦¦
                   +------------------+ Descending Ctrl+F3 ¦¦
                   ¦                  L---------------------¦
                   ¦                                        ¦
                   L-----------------------------------------

            Рис. 5.11 Пример меню

            В данном меню Widgets и Arrange List -  это  команды  вывода
       всплывающего меню.  Когда  пользователь щелкает кнопкой "мыши" на
       команде Widgets,  выводится всплывающее меню  с  командами  List,
       Add, Arrange  и Arrange List.  Когда пользователь щелкает кнопкой
       "мыши" на команде Arrange List, выводится другое всплывающее меню
       меню с командами Ascending  и Descending.

            List и Add - это элементы меню (команды). Когда пользователь
       щелкает на данных командах кнопкой "мыши",  прикладная  программа
       выполняет действие. Команда List выводит список записей, а коман-
       да Add выводит диалоговое окно, которое запрашивает у пользовате-
       ля запись, добавляемую к списку.

            Обратите внимание на разделитель меню, отделяющий группу ко-
       манд List и Add от команды вывода всплывающего меню Arrange List.



                Создание меню с помощью текстового редактора
       -----------------------------------------------------------------

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

            Файл идентификаторов  (WDGCONTS.PAS)  должен  для  программы
       Паскаля содержать следующий код:

            unit RWPDemoC;
            interface
            const
               wmnu_List = 101;
               wmnu_Add  = 102;
               wmnu_Asc  = 103;
               wmnu_Desc = 104;
            implementation
            end;

            Файл, содержащий меню, должен содержать следующий код:

            #include "wdgconst.pas"

            MENU_1 MENU
            BEGIN
               POPUP "&Widgets"
               BEGIN
                 MENUITEM "&List\tCtrl+L", wmnu_List
                 MENUITEM "&Add...\tCtrl+A", wmnu_Add
                 MENUITAM SEPARATOR
                 POPUP "A&rrange List"
                 BEGIN
                    MENUITEM "&Ascending\tCtrl+F2", wmnu_Asc
                    MENUITEM "&Descending\tCtrl+F3", wmnu_Desc
                 END
              END
            END



                   Создание меню с помощью редактора меню
       -----------------------------------------------------------------

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

                                 Создание меню

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

            1. Убедитесь, что вы уже открыли проект. Если вы работаете с
               примерами ресурсов каждой главы,  откройте файл MYPROJ.RC
               (информацию об открытии проекта можно найти в Главе 3).

            2. Открыв  проект,  выберите  команду   Resource¦Open   (Ре-
               сурс¦Открытие).

            3. Пакет  разработчика  ресурсов выводит диалоговое окно New
               Resource (Новый ресурс).  Прокрутите список Resource Type
               (Тип ресурса),  пока вы не увидите MENU, щелкните на этом
               элементе кнопкой "мыши", затем выберите кнопку OK.

               Пакет разработчика ресурсов добавляет в окно проекта  но-
               вый  ресурс,  затем выводит в редакторе меню новое меню с
               подсвеченным  первым  оператором  в  схеме   меню   POPUP
               "Pop-up".

            4. Чтобы  переименовать  начальный оператор меню с Pop-up на
               Widgets, наберите в диалоговом окне в текстовом поле Item
               text  (Текст  элемента)  &Widgets.  Затем нажмите клавишу
               Enter.

            Обратите внимание,  что W в Widgets подчеркивается. Это ука-
       зывает, что  данное меню выводится,  если вы нажимаете для выбора
       команды Widgets W.

                       Добавление команд к меню Widgets

            Далее нужно добавить команды  к  меню,  выводимому  командой
       Widgets. Для этого:

            1. Переименуйте первый элемент меню и добавьте текст, указы-
               вающий клавишу акселератора,  нажмите Ctrl+стрелка  вниз,
               подсветите  вторую  строку  схемы меню (MENUITEM "Item"),
               затем наберите &List\tCtrl+L в текстовом поле  Item Text.

            2. С помощью клавиши Tab переместитесь на следующее  поле  -
               Item  ID (Идентификатор элемента) - и наберите wmnu_List,
               чтобы задать  идентификатор для данной команды  (он будет
               позднее использоваться редактором акселератора для созда-
               ния акселератора команды - Ctrl+L).

               Пакет разработчика ресурсов спрашивает у вас,  хотите  ли
               вы создать новый идентификатор. Чтобы сделать это, нажми-
               те клавишу Enter,  затем в диалоговом окне Mew Identifier
               (Новый  идентификатор) нажмите клавишу Enter,  чтобы было
               воспринято текущее выводимое значение.

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

            3. С помощью подсвеченной второй строки схемы  меню (команда
               List) добавьте новую команду меню,  нажав клавишу Ins или
               выбрав команду Menu¦New Item (Меню¦Новый элемент).

            4. В текстовом поле Item Text (Текст элемента) для изменения
               текста на  новый  элемент  меню  наберите &Add..\tCtrl+A.
               (Многоточие после команды Add указывает,  что данная  ко-
               манда выводит диалоговое окно.)

            5. Поскольку вы указали,  что клавиши Ctrl+A должны быть ак-
               селератором данного элемента меню,  переместитесь  в  по-
               мощью  клавиши  табуляции  в  поле Item ID (Идентификатор
               элемента) и наберите wmnu_Add, после чего нажмите клавишу
               Enter. На подсказку отвечайте также, как в случае иденти-
               фикатор wmnu_List.

            6. В подсвеченной третьей строке схемы  меню  (команда  Add)
               нажмите клавиши Ctrl+P,  затем измените текст на A&rrange
               List...,  чтобы добавить в  меню  новую   команду  вывода
               всплывающего окна Arrange List.

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

            7. Подсветите строку, определяющую команду Add, затем нажми-
               те клавиши Ctrl+S, чтобы поместить после команды раздели-
               тель.

                     Добавление команд в меню Arrange List

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

            1. Измените  элемент  меню  "Item"  на  "&Ascending" (запись
               "Item" создается пакетом разработчика ресурсов при созда-
               нии меню Arrange List).

            2. Чтобы  добавить  новый  элемент  меню после "&Ascending",
               нажмите   клавишу   Ins,   затем   переименуйте   его   в
               "&Descending".

            3. Если  хотите,  можете  указать  для каждой из этих команд
               клавиши акселераторов, как это делается для команд List и
               Add.  Если  вы указываете акселераторы,  определите также
               идентификаторы для команд.

                                 Проверка меню

            Проверьте меню,  щелкнув кнопкой "мыши" на команде Widgets в
       области проверки меню и раскрывая команду Arrange List. Вы должны
       получить картинку, аналогичную Рис. 5.11.

            Выбрав команду Menu¦Check Dupolicates (Меню¦Проверка  дубли-
       рования идентификаторов)  вы можете также проверить дублирующиеся
       значения.

            - Если таких идентификаторов нет, вы получите сообщение: "No
              duplicates founds" ("Дублируемых идентификаторов не найде-
              но").

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

      Глава 6. Создание акселераторов..................................5
       Использование редактора акселераторов...........................8
       Область схемы...................................................8
       Область диалогового окна........................................9
       Запуск редактора меню..........................................12
       Запуск редактора акселераторов.................................12
       Создание новой таблице акселераторов...........................12
       Редактирование существующей таблицы идентификаторов............14
       Настройка таблицы акселераторов................................15
       Выбор клавиши акселератора.....................................15
       Использование диалогового окна.................................16
       Установка значения команды.....................................16
       Клавиши ASCII и виртуальные клавиши............................17
       Задание клавиш акселераторов...................................17
       Перемещение и копирование акселератора.........................20
       Удаление акселератора..........................................20
       Отмена операций и их повторение................................20
       Проверка дублирования комбинаций клавиш........................20
       Редактирование записи ресурса для таблицы акселераторов........20
       Создание примера таблицы акселераторов.........................23
      Глава 7. Создание таблицы строк.................................26
       Запуск редактора строк.........................................26
       Работа с таблицами строк.......................................29
       Windows и строки...............................................30
       Ввод новой строки..............................................32
       Редактирование существующих строк..............................33
       Изменение строки...............................................33
       Восстановление измененных значений строк.......................33
       Удаление строки................................................34
       Редактирование записи ресурса строковой таблицы................34
       Изменение строки...............................................34
       Изменение идентификатора.......................................35
       Сохранение таблицы строк.......................................35
       Проверка таблицы строк.........................................36
       Создание примера таблицы строк.................................37
      Глава 8. Использование графического редактора...................41
       Запуск строкового редактора....................................41
       Загрузка курсоров, шрифтов и битовых массивов..................41
       Загрузка пиктограмм............................................43
       Средства, доступные для ресурсов...............................43
       Фоновый и основной цвета.......................................44
       Использование палитры инструментальных средств.................46
       Выделение прямоугольника.......................................48
       Ножницы........................................................50
       Инструментальное средство изменения размера изображения........50
       Изменение размера части графического изображения...............51
       Средство стирания..............................................52
       Перо...........................................................53
       Кисть..........................................................54
       Краскораспылитель..............................................55
       Банка с краской................................................56
       Средство рисования линии.......................................57
       Средство изображения цвета.....................................58
       Рисование пустых рамок.........................................59
       Закрашенные рамки..............................................60
       Инструментальное средство "Рука"...............................62
       Выбор стилей...................................................64
       Использование двух областей окна...............................64
       Масштабирование................................................67
       Использование акселераторов масштабирования....................68
       Определение масштабируемой части изображения...................69
       Перемещение масштабированного графического изображения.........69
       Вывод сетки в окне с масштабированным изображением.............70
       Чтение строки состояния........................................72
       Правая часть: информация о текущем инструменте рисования.......72
       Левая часть: пояснение команд меню.............................73
       Работа с цветами...............................................73
       Выбор для ресурса числа цветов.................................74
       Использование основного цвета..................................75
       Использование фонового цвета...................................75
       Включение в курсор или пиктограмму.............................76
       Использование атрибутов transparent и inverted.................77
       Вывод и отмена вывода палитры цветов...........................78
       Настройка цветов...............................................78
       Редактирование цветов палитры Colors...........................79
       Изменение цветов прозрачных и инвертированных областей.........82
       Добавление текста к ресурсу....................................82
       Выравнивание текста............................................83
       Выбор шрифта, размера и стиля текста...........................84
       Выбор формы кисти..............................................86
       Выбор образцов закраски........................................89
       Выбор типа линии...............................................91
       Выравнивание выделенной области................................93
       Изменение размера выделенной области...........................94
       Установка глобальных параметров графического редактора.........97
       Draw on both images............................................97
       Grig  on  zoomed windows.......................................98
       Save with default device colours...............................98
      Глава 9. Создание пиктограмм....................................99
       Запуск графического редактора.................................101
       Создание новой пиктограммы....................................101
       Выбор формата записи..........................................102
       Двоичный формат...............................................103
       Редактирование существующей пиктограммы.......................106
       Настройка пиктограммы.........................................108
       Вопросы проектирования........................................108
       Увеличение размера пиктограммы................................109
       Работа с прозрачной и инвертированной областями...............109
       "Трехмерное" изображение пиктограммы..........................111
       Проверка пиктограммы..........................................113
       Сохранение пиктограммы........................................114
       Сохранение проекта............................................114
       Сохранение ресурса пиктограммы в виде файла...................114
       Добавление к ресурсу пиктограммы графического изображения.....118
       Удаление пиктограмм и графических изображений.................120
       Удаление ресурса пиктограммы..................................120
       Удаление графического образа пиктограммы......................120
       Редактирование записи ресурса пиктограммы.....................121
       Создание образца пиктограммы..................................122
       Создание новой пиктограммы....................................122
       Изменение цвета прозрачной области............................122
       Отображение калькулятора......................................123
       Получение объемного эффекта...................................126
       Изображение книги счетов......................................128
       Копирование графического образа с другим цветовым форматом....131
      Глава 10. Создание курсоров....................................132
       Запуск графического редактора.................................135
       Создание нового курсора.......................................135
       Двоичный формат...............................................138
       Редактирование существующего курсора..........................139
       Настройка курсора.............................................139
       Вопросы проектирования........................................140
       Увеличение размера курсора....................................141
       Работа с прозрачной и инвертированной областями...............141
       Задание оперативной точки курсора.............................144
       Проверка курсора..............................................145
       Сохранение изменений..........................................147
       Сохранение проекта............................................147
       Сохранение ресурса курсора в виде файла.......................147
       Редактирование записи ресурса курсора.........................150
      Глава 11. Создание битовых массивов............................151
       Запуск графического редактора.................................152
       Создание нового битового массива..............................152
       Редактирование существующих битовых массивов..................155
       Настройка битового массива....................................156
       Изменение размера и цветов битового массива...................156
       Сохранение битового массива...................................159
       Сохранение всего проекта......................................159
       Сохранение битового массива в виде файла......................160
       Проверка битового массива.....................................160
      Глава 12. Создание шрифтов.....................................161
       Запуск графического редактора.................................162
       Создание нового ресурса шрифта................................162
       Редактирование существующего ресурса шрифта...................165
       Настройка файла шрифта........................................166
       Изменение изображения шрифта..................................166
       Определение набора символов для шрифта........................167
       Создание шрифтов переменной ширины............................171
       Определение заголовка ресурса шрифта..........................172
       Изменение размера и атрибутов.................................178
       Удаление образа шрифта........................................178
       Сохранение ресурса шрифта.....................................179
       Сохранение проекта............................................179
       Сохранение шрифта в виде файла................................179
       Добавление ресурса шрифта к прикладной программе..............179
       Создание файла .FON с помощью Турбо Паскаля...................181
       Создание файла .FON с помощью С++.............................181
       Проверка шрифта...............................................183
       Пример ресурса шрифта.........................................183
      Глава 13. Создание ресурсов, определенных пользователем........186
       Создание ресурса, определенного пользователем.................187
       Добавление ресурса, определенного пользователем...............187
       Редактирование определенного пользователем ресурса............190
       Ввод данных в записи ресурса..................................190
       Обработка данных, записанных в отдельном файле................193
       Проверка ресурса, определенного пользователем.................193
       Использование типа ресурса RCDATA.............................194
       Удаление ресурса, определенного пользователем.................194
      Приложение A. Технические замечания............................195
       Диалоговые окна, как порожденные или перекрывающиеся окна.....196

[ Назад ] [ Оглавление ] [ Далее ]

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог