«IS-DOS - первое знакомство» 1994 г.

USER-меню - составление USER-меню. Управляющие символы. Ключи USER-меню.


                        Составление USER-меню.

   Система USER-меню IS-DOS позволяет заранее запрограммировать  вызов
каких-либо  часто используемых Вами утилит или программ,  оформив  для
этого специальное окно со списком этих программ, курсором для выбора и
краткими  комментариями. В этой главе речь пойдет о том, как правильно
самому написать USER-меню к использовать его для своих целей.
   USER-меню     представляет    собой    специальное     определяемое
пользователем окно, состоящее из произвольного числа строк.
   Строки   в   USER-меню  бывают  двух  видов  -  текстовые   строки,
содержащие  заголовки  меню, разделительные линии  и  другую  полезную
информацию  и  рабочие строки, по которым перемещается курсор  меню  -
горизонтальная линия, отмечающая выбранную в данный момент строку.
   Курсор меню перемещается при помощи курсорных клавиш вверх и  вниз,
нажатие  ENTER на одной из рабочих строк вызывает выполнение командной
строки,  закрепленной за этой рабочей строкой меню. Выход из USER-меню
может  быть осуществлен в любой момент нажатием стандартной комбинации
клавиш SS+A.
   Конфигурация, внешний вид и список вызываемых команд для  USER-меню
содержится  в  текстовом  файле в специальном формате,  который  будет
описан  чуть  позже.  Интерпретацией этого файла занимается  программа
menu.com, находящаяся обычно в каталоге SHELL (до 06.95 - UTIL).
   Программа  menu.com  при вызове из bat-файла или  командной  строки
без  параметров  ищет  в текущем каталоге файл с именем  menu.mnu  (до
06.95  - menu.txt), содержащий описание меню, а не найдя его в текущем
каталоге,  ищет файл с таким же именем в каталоге SHELL. Это позволяет
создавать  практически  в любом каталоге свои локальные  USER-меню,  а
общее,  универсальное  меню,  вызываемое  при  отсутствии  локального,
держать в каталоге SHELL.
   Кроме  того при вызове из bat-файла, или командной строки программе
menu.com  может быть задано конкретное имя файла, содержащего описание
необходимого  меню.  Это  позволяет,  в  частности,  закрепить   вызов
конкретного  USER-меню за какой-либо клавишей в файле extkey.txt,  или
организовать вызов одного меню из другого.
   Вызов  команды  menu.com  с параметром позволяет  также  держать  в
одном  каталоге более одного файла меню. По неофициальному  стандарту,
все  файлы  с  описаниями USER-меню имеют расширение mnu.  На  базовой
дискете  IS-DOS все файлы USER-меню, за исключением локальных, собраны
в  специальный каталог SHELLMNU. Содержание в одном каталоге  файлов
вложенных меню позволяет ускорить переход из одного меню в другое, так
как при этом не надо будет переходить из каталога в каталог.
   Теперь   рассмотрим  более  подробно  структуру  текстового  файла,
содержащего описание USER-меню. Как и любой другой текстовый файл,  он
должен состоять из текстовых строк, содержащих необходимую информацию.
Первый  символ  каждой  строки  считается  управляющим  и  информирует
программу menu.com о том, какая именно информация содержится в  данной
строке.  Управляющие  символы всегда набираются в латинском  регистре,
если  же  вместо латинского "Р" вы наберете русское "Р", следующая  за
ним строка будет проигнорирована.
                                   
                         Управляющие символы:

   К  -  строка, содержащая служебную информацию и параметры окна меню
(описание формата см. далее)
   Р - строка для внутренних команд DOS, вызываемых при входе в меню
   Т - командная строка, выполняемая при нажатии клавиши SS+A (отказ)
   а - текстовые строки меню, не обрабатываемые курсором
   А - рабочие строки меню, обрабатываемые курсором
   С  -  командные строки, содержащие команды, выполняемые при нажатии
ENTER на соответствующей рабочей строке меню
   с  -  командные строки, предназначенные для вызова больших программ
с  адресом  загрузки ниже 25000 Z - строки для внутренних команд  DOS,
вызываемых   при   нажатии  ENTER  перед  выполнением  соответствующей
командной строки
   Н  -  строки текстов-подсказок, которые могут выводиться  на  экран
при установке курсора на соответствующую рабочую строку
   Если  в  командной строке после управляющего символа  С,  с  или  Т
стоит  символ "*", то имя файла, на котором находился панельный курсор
в  момент вызова USER-меню, передается в качестве параметра вызываемой
команде. Поясним на примере:
   Допустим,  что в момент вызова меню панельный курсор  указывает  на
имя файла prise.txt, тогда командная строка вида
   C*Q:SHELLdelete
   вызовет выполнение команды
   Q:SHELLdelete prise.txt
   Строки  К,  Р и Т определяют параметры и команды для всего  меню  в
целом,  поэтому  в  каждом меню не может быть более  одной  строки  К,
строки  Р и строки Т. Строки К, Р, Т, Н и Z не являются обязательными,
при  отсутствии  строки К устанавливаются параметры по умолчанию  (см.
далее).
   Положение  строк К, Р и Т в тексте значения не имеет,  в  каком  бы
месте файла Вы их ни поместили - система все равно их найдет. Строки А
и  а располагаются в том порядке, в котором они должны быть выведены в
окне  меню.  Связанные с ними строки Z, Н, С и c должны  располагаться
после соответствующей им строки А.
   Такая  особенность  позволяет использовать одну строку  команд  или
подсказок  для  нескольких строк меню, но требует более  внимательного
отношения к тексту.
   Поясним на примере:
   Допустим, мы имеем файл menu.mnu следующего содержания:
   
   а Работа с MS-DOS
   а
   А ВЫХОД В SHELL
   АПИСАТЬ НА MS-DOS ДИСКИ
   НЗапись отмеченных файлов
   CQ:MSDOSto_msdos.com
   АЧИТАТЬ ИЗ MS-DOS ДИСКА
   НЧтение дисков MS-DOS
   CQ:MSDOSfrom_msd.com
   
   Этот файл содержит две серьезных ошибки:
   1.  При установке курсора на строку "ВЫХОД В SHELL" система выведет
подсказку,  относящуюся  к следующей строке, так  как  соответствующая
этой строке подсказка отсутствует.
   2.  При  нажатии  ENTER на той же строке будет исполнена  командная
строка,  относящаяся к следующей строке меню, так как  соответствующая
командная строка отсутствует.
   Эту проблему можно решить как минимум двумя способами:
   Вариант  1 - задать для первой строки А пустые строки С и Н,  тогда
текст меню будет иметь вид:
   
   а Работа с MS-DOS
   а
   А ВЫХОД В SHELL
   Н
   С
   АПИСАТЬ НА MS-DOS ДИСКИ
   НЗапись отмеченных файлов
   CQ:MSDOSto_msdos.com
   АЧИТАТЬ ИЗ MS-DOS ДИСКА
   НЧтение дисков MS-DOS
   CQ:MSDOSfrom_msd.com
   
   Пустые строки Н, Z, С и с можно опустить, если в Вашем меню нет  ни
одной такой строки.
   Вариант  2  -  перенести строку "ВЫХОД В SHELL"  в  конец  файла  и
дописать строку подсказки для нее:
   а Работа с MS-DOS
   а
   НАПИСАТЬ НА MS-DOS ДИСКИ
   Запись отмеченных файлов
   CQ:MSDOSto_msdos.com
   АЧИТАТЬ ИЗ MS-DOS ДИСКА
   НЧтение дисков MS-DOS
   CQ:MSDOSfrom_msd.com
   А ВЫХОД В SHELL
   Н Выход в оболочку
   
   Поскольку строка "ВЫХОД В SHELL" оказалась в конце текста,  при  ее
выборе  ничего не происходит и отработка меню завершается с выходом  в
оболочку.
   Формат строки ключей К:
   Строка К в описании USER-меню имеет вид:
   К/символ число / символ число ...
   Числа   можно  записывать  в  десятичном  формате  (по  умолчанию),
например, 255; в 16-ричном с префиксом #, например, #1F; в октальном с
префиксом  о,  например,  о12;  а также  в  двоичном  с  префиксом  %,
например, %01100011.
   Разделять  ключи  пробелами  не требуется,  так  как  ключи  и  так
отделены друг от друга символом "/". Строка К интерпретируется до  тех
пор, пока не будет встречен символ пере-
   вода  строки, поэтому разбивать ее на несколько строк нельзя. Также
в  одном  тексте меню не должно быть более одной строки К, в противном
случае интерпретируется только первая из них.
                                   
                           Ключи USER-меню:

       А - байт конфигурации меню.
       бит 1 - вид окна меню, "0" - без тени, "1" - с тенью,
       бит 2 - реакция на ENTER, "0" - интерпретируются строки с, С  и
       Z,  после  отработки осуществляется выход  в  оболочку,  "1"  -
       выполняются  только  строки внутренних  команд  Z,  после  чего
       происходит возврат в меню.
       бит 3 - рамка окна, "0" - одинарная, "1" - двойная,
       бит  4  - отработка строки Р при входе в меню, "0" - выполнить,
       "1" - игнорировать.
       биты 5 - 8 - не используются и могут содержать любые значения.
   Все  эти  режимы удобно задавать десятичными числами 1, 2,  4  и  8
соответственно, при этом суммарные значения включают несколько режимов
одновременно, например:
       /А5  -  окно  с  тенью  и  двойной  рамкой.  В  -  второй  байт
       конфигурации, биты 1 и 2 - не используются.
       бит 3 - вид курсора, "0" - курсор выводится на всю ширину окна,
       "1"   -  курсор  выводится  на  внутреннюю  область  окна,   не
       затрагивая область рамки,
       бит 4 - не используется.
       бит 5 - вид окна подсказки, "0" - с рамкой, "1"- без рамки.
       биты 6 и 7 - не используются.
   Эти  значения  также удобно задавать десятичными числами  (4  и  16
соответственно), также возможно суммирование значений, например:
       /В20 - окно подсказки без рамки, курсор внутри рамки окна.
       Е  - Х-координата окна меню в знакоместах 8*8 пикселей. D -  Y-
       координата окна меню в строках.
   Размеры  окна система устанавливает автоматически в соответствии  с
количеством строк в меню и максимальной длиной строки.
       Н - Х-координата окна подсказки в знакоместах 8*8
       пикселей.
       G - Y-координата окна подсказки в строках.
       N - высота подсказки в строках.
       С - ширина окна подсказки в знакоместах 6*8 пикселей.
       F  -  номер строки, на которой располагается курсор при  вызове
       меню.
       К - цвета окна меню
       Т - цвета тени окна меню
       J - цвета курсора меню
       О - цвета рабочего курсора меню
       I - цвета окна подсказки
   Цвета задаются в стандартном формате:
       биты 0 - 2 - цвет чернил
       биты 3 - 5 - цвет бумаги
       бит 6 - яркость
       бит 7 - мерцание
   Для  байта  цветов  тени  биты  6 и 7 игнорируются.  Как  уже  было
сказано  выше,  при  отсутствии строки К параметры устанавливаются  по
умолчанию. Значения параметров по умолчанию приводятся в табл. 5.

   Таблица 5. Значения параметров меню по умолчанию.


   Пример USER-меню:

   ТСАТ Q:SHELL
   РСАТ Q:
   K/N3/BO/A5/G1/EO/D4/T%00000001/K%00101000/J
   00001110/О%01001110/С38
   a USER MENU
   а
   А РАБОТА С ДИСКОМ
   Н Дисковые утилиты, работа с файлами
   CQ:SHELLmenu Q:SHELLMNUdisk.mnu
   ZCAT Q:UTIL
   А РЕЗИДЕНТЫ
   CQ:SHELLmenu Q:SHELLMNUres.mnu
   Н Установка драйверов; и резидентов
   А РАБОТА С TR-DOS
   CQ:SHELLmenu Q:SHELLMNU tr_dos.mnu
   Н Обмен файлами с системой TR-DOS
   А РАБОТА С MS-DOS
   CQ:SHELLmenu Q:SHELLMNUms_dos.mnu
   Н Обмен файлами с системой MS-DOS
   АДЕРЕВО КАТАЛОГОВ
   CQ:UTILtree
   Н Вывод дерева каталогов текущего диска
   А СПРЯТАТЬ ФАЙЛЫ
   Н Установка атрибутов "Скрытый файл"
   CQ:SHELLexebat Q:RESattrh.bat
   А УВИДЕТЬ ФАЙЛЫ
   Н Снятие атрибута "Скрытый файл"
   CQ:SHELLexebat Q:RESattr.bat
   А ВЫХОД В SHELL
   Н Выход в оболочку IS-DOS




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
ZXNet - О секретных файлах для пользователей сети ZXNet.
Обзор новинок - Ученик мага, Operation Oil.
Проба пера - "Сегадня я выпил пива,посему не такой злой...."
Anigdot №45 - Мы вернулись ! YES ! БУРНЫЕ АПЛОДИСМЕНТЫ !
Партийная зона - "PHAT0, как много в этом слове для сердца сценера слилось?!". Информация о предстоящем демопати.

В этот день...   20 апреля