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

Ваш аккаунт

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

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

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

Borland C++ 3.0

                       Глава 6. Создание акселераторов
       -----------------------------------------------------------------

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

            Обычно акселераторы создаются для дублирования команд всплы-
       вающих меню.  Например, если вы откроете в большинстве прикладных
       программ Windows меню Edit (Редактирование), то увидите следующие
       акселераторы: Shift+Del (команда Cut),  Shift+Ins (команда Paste)
       и Ctrl+Ins (команда Copy).

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

                     ------------------------------------¬
                     ¦-----------------------------------¦
                     +-----------------------------------+
                     ¦ Cut                 Shift+Del     ¦
                     ¦ Copy                Ctrl+Ins      ¦
                     ¦ Paste               Shift+Ins     ¦
                     +-----------------------------------+
                     ¦ Clear                             ¦
                     ¦ Delete                            ¦
                     L------------------------------------

            Рис. 6.1 Окно Edit с акселераторами

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

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

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

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

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

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


       ----T---------------------------------------------------T---T---¬
       ¦ - ¦              ACCELERATORS: acc_Main               ¦ ^ ¦ v ¦
       +---+------------------------------T--------------------+---+-T-+
       ¦--------------------------------¬ ¦         acc_Main         ¦^¦
       ¦¦ Command                       ¦ +--------------------------+-+
       ¦¦--------------¬---------------¬¦ ¦-VK_BACK 24325------------¦-¦
       ¦¦¦             ¦¦ 24325        ¦¦ ¦ VK_DELETE 24320          ¦-¦
       ¦¦L--------------L---------------¦ ¦ VK_INSERT 24321          ¦-¦
       ¦L-------------------------------- ¦ VK_INSERT 24322          ¦-¦
       ¦--------------------------------¬ ¦ VK_F1 141                ¦-¦
       ¦¦ Key                           ¦ ¦ VK_F2 142                ¦-¦
       ¦¦--------------¬                ¦ ¦                          ¦-¦
       ¦¦¦ VK_BACK     ¦                ¦ ¦                          ¦-¦
       ¦¦L--------------                ¦ ¦                          ¦-¦
       ¦L-------------------------------- ¦                          ¦-¦
       ¦--------------------------------¬ ¦                          ¦-¦
       ¦¦ Key type                      ¦ ¦                          ¦-¦
       ¦¦                               ¦ ¦                          ¦-¦
       ¦¦   < Ascii      >* Virtual key ¦ ¦                          ¦-¦
       ¦¦                               ¦ ¦                          ¦-¦
       ¦L-------------------------------- ¦                          ¦-¦
       ¦--------------------------------¬ ¦                          ¦-¦
       ¦¦ Modifiers                     ¦ ¦                          ¦-¦
       ¦¦                               ¦ ¦                          ¦-¦
       ¦¦  V¦ Ascii  ¦ Shift  ¦ Control ¦ ¦                          ¦-¦
       ¦¦  --       --       --         ¦ ¦                          ¦-¦
       ¦¦     V¦ Invert menu item       ¦ ¦                          ¦-¦
       ¦¦     --                        ¦ ¦                          ¦-¦
       ¦L-------------------------------- ¦                          ¦-¦
       ¦                                  ¦                          +-+
       ¦                                  ¦                          ¦v¦
       L----------------------------------+--------------------------+--

           Риc. 6.2  Таблица акселераторов RWPDEMO в редакторе акселера-
       торов

            Command - команда;  Key - клавиша;  Key type - тип  клавиши;
       Ascii - клавиша с кодом Ascii; Virtual key - виртуальная клавиша;
       Modifiers - модификаторы;  Invert menu item - инвертирование эле-
       мента меню.



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

            Экран редактора акселератора разделен на две области  -  об-
       ласть схемы и область диалогового окна (см. Рис. 6.2).

            Перемещаться между  этими  двумя  областями  можно с помощью
       "мыши" или клавиш F6 и Ctrl+F6.
                                Область схемы
       -----------------------------------------------------------------

            В правой области,  области схемы, выводятся все определенные
       в таблице акселераторы.  В верхней строке данной области показано
       имя таблицы идентификаторов.  Выведенные ниже строки - это записи
       акселераторов.

            Запись акселератора состоит из двух частей:

            - Первая часть представляет собой клавишу акселератора.

                 * Если клавиша представляет собой  виртуальную  клавишу
                   (идентификатор в верхнем регистре, который начинается
                   с VK_ и представляет такие клавиши,  как функциональ-
                   ные клавиши и клавиши стрелок),  вы можете посмотреть
                   в блоке кнопок с независимой фиксацией Modifiers диа-
                   логового окна, является ли клавиша комбинацией клавиш
                   c Alt, Ctrl или Shift.

                   Например, клавиша Ctrl+Alt+Shift+F1  представляется в
                   области схемы,  как VK_F1.  Кроме того,  в диалоговом
                   окне установлены кнопки с независимой  фиксацией Alt,
                   Shift и Control.

                 * Если  клавиша  представляет  собой клавишу кода ASCII
                   (отображаемая клавиша,  заключенная в двойные  кавыч-
                   ки), то она может задаваться буквой верхнего или ниж-
                   него регистра с предшествующим символом каре (^), что
                   указывает  на  ее  сочетание  с клавишей Ctrl (Ctrl+W
                   представляется как "^W").  Вы  можете  посмотреть  на
                   кнопку  с независимой фиксацией (параметр) Alt в диа-
                   логовом окне и определить, комбинируется ли клавиша с
                   клавишей Alt.

                   Например, Ctrl+Alt+W  представляется  в области схемы
                   как "^W". Кроме того в области диалогового окна уста-
                   навливается параметр Alt.

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

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

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

            - Клавиши Tab и Shift+Tab позволяют перемещаться между груп-
              пами (такими как группы Key Type и Modifiers).  Блок текс-
              тового  ввода  (типа Key) и кнопка с независимой фиксацией
              (типа Alt) также считаются группой.

              Если вы нажмете клавишу Tab для перемещения  с  текстового
              блока Command в текстовый блок Key, редактор акселераторов
              переходит в режим Key Value (Значение клавиши),  в котором
              вы можете нажать любую клавишу,  чтобы ввести ее как аксе-
              лератор.  Чтобы выйти из этого  режима,  щелкните  кнопкой
              "мыши" или нажмите клавиши Alt+Esc.

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

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

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

             Параметры диалогового редактора  акселераторов  Таблица 6.1
       ------------------------T---------------------------------------¬
       ¦   Параметр            ¦ Описание                              ¦
       +-----------------------+---------------------------------------+
       ¦   Command             ¦ Идентификатор выполняемой  акселерато-¦
       ¦   (команда)           ¦ ром команды. Вы  можете  ввести  здесь¦
       ¦                       ¦ числовое значение или идентификатор.  ¦
       ¦                       ¦                                       ¦
       +-----------------------+---------------------------------------+
       ¦   Key                 ¦ Клавиша акселератора. Вы можете ввести¦
       ¦   (клавиша)           ¦ клавишу в ручном режиме (Manual mode),¦
       ¦                       ¦ когда нужно  решить,  является ли  эта¦
       ¦                       ¦ клавиша  клавишей  ASCII,  и заключить¦
       ¦                       ¦ ее в двойные кавычки,  или виртуальной¦
       ¦                       ¦ клавишей (идентификатор или целое чис-¦
       ¦                       ¦ ло),  либо это режим значения  клавиши¦
       ¦                       ¦ (Key  Value).  В  последнем случае при¦
       ¦                       ¦ нажатии клавиши редактор сам определя-¦
       ¦                       ¦ ет,  какая это клавиша - клавиша ASCII¦
       ¦                       ¦ или виртуальная клавиша - и  вводит ее¦
       ¦                       ¦ в соответствующем формате. Если вы пе-¦
       ¦                       ¦ реместитесь в это текстовое поле с по-¦
       ¦                       ¦ мощью   клавиши   табуляции   из  поля¦
       ¦                       ¦ Command, то режим Key Value устанавли-¦
       ¦                       ¦ вается автоматически.                 ¦
       ¦                       ¦                                       ¦
       +-----------------------+---------------------------------------+
       ¦   Key Type            ¦ Задайте клавишу ASCII или  виртуальную¦
       ¦   (тип клавиши)       ¦ клавишу. Если вы  находитесь в  режиме¦
       ¦                       ¦ Key Value, то  редактор  акселераторов¦
       ¦                       ¦ устанавливает данные кнопки с  зависи-¦
       ¦                       ¦ мой фиксацией автоматически.          ¦
       ¦                       ¦                                       ¦
       ¦     ASCII             ¦ Введенная  вами  клавиша  представляет¦
       ¦     (клавиша ASCII)   ¦ собой отображаемую клавишу и представ-¦
       ¦                       ¦ ляется   с  использованием  соглашений¦
       ¦                       ¦ ASCII  (символ  заключается в  двойные¦
       ¦                       ¦ кавычки, а Ctrl представляется в  виде¦
       ¦                       ¦ каре (^). Например, Ctrl+L представля-¦
       ¦                       ¦ ется как "^L".                        ¦
       ¦                       ¦                                       ¦
       ¦     Virtual Key       ¦ Введенная вами клавиша не имеет  стан-¦
       ¦     (Виртуальная      ¦ дартного представления в виде  символа¦
       ¦     клавиша)          ¦ и  должна  задаваться  идентификатором¦
       ¦                       ¦ (например, клавиша F1 задается иденти-¦
       ¦                       ¦ фикатором Windows VK_F1).             ¦
       ¦                       ¦                                       ¦
       +-----------------------+---------------------------------------+
       ¦   Modifiers           ¦ Набор кнопок с независимой  фиксацией,¦
       ¦   (модификаторы)      ¦ которые определяют  комбинации  клавиш¦
       ¦                       ¦ для соответствующего   элемента  меню.¦
       ¦                       ¦ Значение каждого параметра описывается¦
       ¦                       ¦ в следующих описаниях.                ¦
       ¦                       ¦                                       ¦
       ¦     Alt               ¦ Акселератор представляет собой  комби-¦
       ¦                       ¦ нацию клавиш с клавишей Alt (например,¦
       ¦                       ¦ Alt+W).                               ¦
       ¦                       ¦                                       ¦
       ¦     Shift             ¦ Акселератор представляет собой  комби-¦
       ¦                       ¦ нацию клавиш с клавишей Shift  (напри-¦
       ¦                       ¦ мер, Shift+F1).                       ¦
       ¦                       ¦                                       ¦
       ¦     Ctrl              ¦ Акселератор представляет собой  комби-¦
       ¦                       ¦ нацию клавиш с клавишей  Ctrl  (напри-¦
       ¦                       ¦ мер, Ctrl+W).                         ¦
       ¦                       ¦                                       ¦
       +-----------------------+---------------------------------------+
       ¦   Invert Menu Item    ¦ Использование акселератора приводит  к¦
       ¦   (инвертирование     ¦ инвертированию  соответствующего  эле-¦
       ¦   элемента меню)      ¦ мента меню.                           ¦
       L-----------------------+----------------------------------------

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

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

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

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

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

                       Запуск редактора акселераторов
       -----------------------------------------------------------------

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

                    Создание новой таблице акселераторов
       -----------------------------------------------------------------

            Для создания новой таблицы акселераторов сделайте следующее:

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

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

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


             Редактирование существующей таблицы идентификаторов
       -----------------------------------------------------------------

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

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

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


                     ----T---------------------------T-T-¬
                     ¦ - ¦       rwdemo.rc           ¦v¦^¦
                     +---+---------------------------+-+-+
                     ¦ FONT                            ¦^¦
                     ¦    1                            +-+
                     ¦ ACCELERATORS                    ¦-¦
                     ¦    acc_Main---------------------¦-¦
                     ¦ RCDATA                          ¦-¦
                     ¦    RCDATA_1                     ¦-¦
                     ¦ CURSOR                          ¦-¦
                     ¦    CURSOR_1                     +-+
                     ¦ ICON                            ¦v¦
                     L---------------------------------+--

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

            Пакет разработчика ресурсов выводит окно с таблицей  акселе-
       раторов, которую вы выбрали для загрузки (см. Рис. 6.2).



                       Настройка таблицы акселераторов
       -----------------------------------------------------------------

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

                         Выбор клавиши акселератора
       -----------------------------------------------------------------

            Чтобы настроить   акселератор,   вы   можете  создать  новый
       идентификатор или выбрать тот, который уже существует.

            - Чтобы добавить к таблице акселераторов  новый акселератор,
              нажмите  клавишу  Ins  или выберите команду Accelerate¦New
              Item (Акселератор¦Новый элемент).  Новая клавиша выводится
              в  строке  под текущей выбранной строкой с назначенным для
              клавиши по умолчанию значением (0) и  уникальным  числовым
              значением идентификатора команды.

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

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

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

            В поле Command (Команда) наберите идентификатор элемента для
       команды, которую должен выполнять акселератор.  Вы можете  ввести
       числовое значение или идентификатор.

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

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

            Если вы   вводите  имя  идентификатора  и  видите  сообщение
       "Create a new identifier:  имя_идентификатора?"  ("Создать  новый
       идентификатор: имя_идентификатора?"), то возможно вы ошиблись при
       наборе имени. Ответьте No (Нет) и проверьте имя.

            Если вы специально ввели новый идентификатор,  поскольку со-
       бираетесь позднее добавить к меню соответствующий элемент,  выво-
       дится подсказка,  запрашивающая у вас, хотите ли вы создать новый
       идентификатор (если вы не получаете такой подсказки, то идентифи-
       катор уже существует,  и возможно вы не  захотите  его  использо-
       вать). Так как вы создаете новый идентификатор, ответьте Yes (Да)
       или нажмите клавишу Enter,  затем введите значение идентификатора
       в диалоговом  окне  New Identifier (Новый идентификатор).  Убеди-
       тесь, что вы вводите значение, отличное от идентификаторов других
       элементов соответствующего меню.

                    Клавиши ASCII и виртуальные клавиши
       -----------------------------------------------------------------
            Вы можете ввести представление самой клавиши в текстовом ок-
       не Key.  Однако перед описание ввода клавиш полезно пояснить, что
       собой представляют клавиши ASCII и виртуальные клавиши.

                                 Клавиши ASCII

            Когда вы  нажимаете  клавишу  ASCII,  то на экране выводится
       символ (например, N, 5 или %).
            Клавиша ASCII,  которая выводится текстовом окне Key, заклю-
       чена  в  символы  кавычек и соответствует стандартным соглашениям
       представления символов ASCII.  Например,  функциональная  клавиша
       без клавиши Shift обозначается как "f",  а с клавишей Shift - как
       "F". Ctrl+F обозначается как "^F".

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

            Обычно одиночные  клавиши  ASCII  в качестве акселератора не
       используются. Как правило,  они комбинируются с клавишами Alt или
       Ctrl (используется Ctrl+L или Alt+L вместо одной клавиши L). Если
       вы используете в качестве акселератора одиночную  клавишу  ASCII,
       следует обратиться  к книге Чарльза Петцольда "Программирование в
       Windows", где описывается,  как Windows интерпретирует  одиночные
       клавиши ASCII  и их сочетания с другими клавишами при использова-
       нии их в качестве акселераторов.

                              Виртуальные клавиши

            При нажатии виртуальной клавиши,  такой как F3  или "стрелка
       вверх", на экран может выводиться символ, но стандартная специфи-
       кация таких символов отсутствует.  Что при этом нужно  вводить  в
       текстовом поле Key? Можно использовать стандартные идентификаторы
       Windows,  предусмотренные для отдельных клавиш, такие как VK_BACK
       (клавиша Backspace) или VK_F1 (клавиша F1). Все эти идентификато-
       ры определены в файле WINDOWS.H.

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

            Для представления  комбинаций с клавишами Ctrl,  Alt и Shift
       клавиш не предусмотрено.  Чтобы представить одну из этих комбина-
       ций, нужно установить соответствующий параметр в группе Modifiers
       (Модификаторы).
                        Задание клавиш акселераторов
       -----------------------------------------------------------------
            Для задания комбинации клавиш акселераторов введите комбина-
       цию клавиш в текстовом поле Key.

            Ваш акселератор должен согласовываться с акселераторами дру-
       гих прикладных программ Windows,  поэтому не  стоит  использовать
       комбинации клавиш,  необходимые  в  Windows (такие как Ctrl+Esc).
       Рекомендации по выбору подходящих комбинаций клавиш можно найти в
       руководстве "SAA  Common  User  Access  Advances Interface Design
       Guide" фирмы IBM.

            Значение клавиши вы можете ввести в двух режимах -  ручном и
       режиме значения клавиши.

                                 Ручной режим

            Если для позиционирования в поле Key вы  используете "мышь",
       или если  нажали  клавиши  Alt+Esc  для выхода из режима значения
       клавиши, то находитесь в ручном режиме.

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

            Если вы хотите использовать комбинацию клавиши Alt и клавиши
       ASCII, нужно установить параметр Alt.  Чтобы использовать сочета-
       ние клавиши Alt, Ctrl и Shift с виртуальной клавишей, нужно уста-
       новить один или более параметров,  связанных с данными модификат-
       орами.

            Например, для   задания   в  качестве  клавиши  акселератора
       Alt+F3 можно набрать в текстовом поле Key VK_F3  (убедитесь,  что
       буквы вводятся в верхнем регистре), и выбрать параметры (кнопки с
       независимой фиксацией) Virtual Key и Alt.

            Для задания  в  качестве  акселератора  Alt+Ctrl+F  наберите
       "^F" или  "^f"  (в  комбинации с клавишами Alt и Ctrl) регистр не
       различается) и установите параметр ASCII и Alt.

                            Режим значения клавиши

            Перейти в режим значения клавиши можно позиционируясь с  по-
       мощью  клавиши  Tab в текстовом поле Key или с помощью выбора ко-
       манды Accelerator¦Key Value (Акселератор¦Значение клавиши). О пе-
       реходе  в  данный  режим  вы  можете  узнать,  когда  окно  схемы
       выводится серым цветом, и в данном окне выводится следующее сооб-
       щение:  "Use  the  keyboard  to select a key.  Click the mouse or
       press Alt+Esc when done." ("Для выбора клавиши используйте клави-
       атуру. При завершении щелкните кнопкой "мыши" или нажмите клавиши
       Alt+Esc.")

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

            Например, если   вы  в  режиме  значения  клавиши  нажимаете
       Alt+F3, то редактор акселераторов вводит  VK_F3  и  устанавливает
       кнопки с независимой фиксацией Virtual Key и Alt.

            Если вы нажимаете в режиме значения клавиши Alt+Ctrl+F,  ре-
       дактор акселераторов выводит в  поле  Key  "^F"  и  устанавливает
       кнопки с независимой фиксацией (параметры) ASCII и Alt.

                            Средство инвертирование

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

            Например, если  вы  используете прикладную программу Windows
       Write, и у вас выделен блок  текста,  нажатие  клавиши  Shift+Ins
       (эквивалент выбора  команды Edit¦Insert (Редактирование¦Вставка))
       приводит к тому,  что Windows временно инвертирует команду Edit в
       строке меню.  Данное  средство позволяет пользователю определить,
       какое меню включает клавишу акселератора.

            Средство инвертирования (которое называется также инвертиро-
       ванием элемента  меню)  при  создании  акселератора  по умолчанию
       включено. Вы можете запретить данное средство,  отменив  параметр
       Invert Menu Item (Инвертирование элемента меню) в диалоговом окне
       редактора акселератора.



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

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

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

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

            1. При   открытой  таблице  акселераторов  выберите  команду
               Accelerator¦Check Dup Keys (Акселератор¦Проверка дублиру-
               емых клавиш).

            2. Если  два акселератора используют одну и ту же комбинацию
               клавиш,   редактор   акселераторов   выводит    сообщение
               "Duplicate key value found" ("Найдено дублируемое  значе-
               ние клавиши"),  и второй акселератор подсвечивается. Вне-
               сите изменения и продолжите отладку таблицы акселераторов
               с помощью команды Check Dup Keys,  пока не получите сооб-
               щение  "No duplicate key values found" ("Дублируемых зна-
               чений клавиш не найдено").
           Редактирование записи ресурса для таблицы акселераторов
       -----------------------------------------------------------------
            Редактор акселераторов Пакета разработчика ресурсов облегча-
       ет создание и модификацию акселераторов. Вы можете также работать
       с записями ресурсов.

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

            Пакет разработчика ресурсов выводит запись ресурса во встро-
       енном текстовом редакторе.

                  Примечание: Описание  встроенного текстового редактора
             см. в начале руководства.

            Приведем пример записи ресурса из конца данной главы:

            My_Accelerators ACCELERATORS
            BEGIN
               "^L", wmnu_List
               "^A", wmnu_Add
               VK_F2, wmnu_Asc, VIRTKEY, CTRL
               VK_F3, wmnu_Desc, VIRTKEY, CTRL
            END

                  Примечание: Описание  параметров  записей ресурсов для
             акселераторов см, в оперативном справочнике Help.

            Если вы  хотите предотвратить инвертирование команды Widgets
       при нажатии Ctrl+L, текстовый редактор можно использовать для до-
       бавления к   первой  строке  предыдущей  записи  ресурса  команды
       NOINVERT. (В редакторе акселераторов тот же эффект  имеет  отмена
       параметра Invert Menu Item.) Когда вы сделаете это,  строка будет
       выглядеть следующим образом:

            "^L", wmnu_List, NOINVERT

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

            1. Выберите в системном меню редактора команду  Close  (Зак-
               рыть).

            2. В  ответ  на  подсказку "Resource has changed.  Compile?"
               ("Ресурс изменен, скомпилировать?") ответьте Yes (Да).

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

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


                   Создание примера таблицы акселераторов
       -----------------------------------------------------------------

            Предположим, вы хотите создать акселераторы для команд List,
       Add, Ascending и Descendign в меню Widgets предыдущей  главы. Без
       Пакета разработчика  ресурсов  вам  пришлось бы создать следующие
       акселераторы:

            My_Accelerators ACCELERATORS
            BEGIN
               "^L", wmnu_List
               "^A", wmnu_Add
               VK_F2, wmnu_Asc, VIRTKEY, CTRL
               VK_F3, wmnu_Desc, VIRTKEY, CTRL
            END

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

            1. Откройте  файл  MYPROJ.RC.  (Об открытии проекта подробно
               рассказывается в Главе 3.).

            2. Выберите команду Resource¦New (Ресурс¦Новый).

            3. В диалоговом окне New Resource (Новый  ресурс)  выполните
               прокрутку  до  типа ресурса ACCELERATOR и дважды щелкните
               на нем кнопкой "мыши",  чтобы указать Пакету разработчика
               ресурсов,  что нужно создать новую таблицу акселераторов.
               Вы увидите окно редактора  акселераторов  с  единственной
               новой записью.

            4. Чтобы  открыть  редактор меню,  дважды щелкните кнопкой в
               окне проекта на ресурсе меню для меню, созданного в Главе
               5.

            5. Измените размер окон в редакторе меню и редакторе акселе-
               раторов, чтобы видеть их одновременно.

            6. В области схемы редактора меню  подсветите  элемент  меню
               List  и отметьте его идентификатор (wnmu_List) и предназ-
               наченный для него акселератор (Ctrl+L).

            7. Щелкните кнопкой "мыши" на новом акселераторе в редакторе
               акселераторов.

            8. В текстовом блоке Command введите имя идентификатора, ко-
               торое вы видите в текстовом блоке Item ID  редактора меню
               (wmnu_List).

            9. C помощью клавиши табуляции переместитесь в текстовое по-
               ле Key.

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

           11. Для выхода из режима значения  клавиши  нажмите  Alt+Esc,
               затем  нажмите  клавишу Enter,  чтобы эти установки стали
               действовать для клавиши акселератора,  подсвеченной в об-
               ласти схемы.

           12. Для создания нового акселератора нажмите клавишу Ins.

           13. Щелкните кнопкой "мыши" в редакторе меню, выберите следу-
               ющую команду или  клавишу  акселератора  и  отметьте  его
               идентификатор элемента и клавишу акселератора.

           14. Повторите шаги 7 - 14, подставляя соответствующие иденти-
               фикаторы и комбинации клавиш,  пока не  будут  определены
               все идентификаторы.

            Когда вы определите все идентификаторы меню,  то все готово.
       Однако в демонстрационных целях мы сделаем еще следующее:

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

            2. Подсветите второй акселератор  и  измените  значение  его
               клавиш на Ctrl+L.

            3. Выберите команду Accelerator¦Check Dup Keys (Акселератор¦
               Проверка дублирования идентификаторов).

            4. Когда выведется сообщение "Duplicate Key Value"  ("Дубли-
               руемое значение идентификатора"), нажмите для его очистки
               клавишу Enter.

            5. Здесь редактор акселераторов позиционирует вас на дублир-
               руемых клавишах, которые вы только что задали (вторая за-
               пись). Вы можете либо перейти с помощью клавиши табуляции
               в  текстовое  поле Key и изменить значение обратно,  либо
               нажать Alt+Backspace, чтобы отменить внесенное изменение.

            6. Снова выберите команду Accelerator¦Check Dup Keys  (Аксе-
               лератор¦ Проверка дублирования идентификаторов). Вы долж-
               ны получить сообщение "No duplicate keys found" (Дублиру-
               емых идентификаторов не найдено").

            7. Выберите команду Edit (Редактирование). Обратите внимание
               на параметр Undi Delete Item (Отмена  удаленного  элемен-
               та), который ссылается на удаление последнего акселерато-
               ра, и другой параметр - Undo Delete Item (Отмена уделения
               элемента),  который ссылается позволяет вам отменить пос-
               леднее удаление (изменить  клавиши  второго  акселератора
               обратно на Ctrl+L).

            8. Для восстановления идентификатора,  который вы удалили на
               шаге 1, выберите Undo Delete Item.

            9. Если вы теперь выберите команду Edit (Редактирование), то
               увидите, что параметр изменился на Redo Delete. Вы можете
               вернуться назад и отменить все последние изменения клавиш
               (число  отмен ограничивается только значением Undo Levels
               (Уровни отмены),  установленном в окне Preferences (Пара-
               метры) (команда File¦Preferences).

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



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

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

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