Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#15| Dragon God
Demon's Souls |#14| Flamelurker
Demon's Souls |#13| Storm King
Demon's Souls |#12| Old Monk & Old Hero

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Стивенс Ал. Весь текст 495.21 Kb

Техника программирования на турбо-С

Предыдущая страница Следующая страница
1 ... 11 12 13 14 15 16 17  18 19 20 21 22 23 24 ... 43
для возврата к..." до полных пользовательских  руководств. Многие
разработчики   программ   предпочитают   передавать   руководство
пользователя таким способом,  а  не  в  виде  больших  громоздких
документов.  Эта  процедура  имеет два последствия:  пользователи
связывают экстравагантные руководства  с  качеством  программ,  а
большие книги способствуют борьбе с "программными пиратами".

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



         Программирование окон подсказки
-----------------------------------------------------------------

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

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

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

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

     Вы узнаете   больше   о  резидентных  в  памяти  программах,
векторах прерываний  и  о  том,  как  присоединять  одно  окно  к
другому,  в Главе 11.  Допустим, что ваше программное обеспечение
читает клавиатуру  с  помощью  функции  get_char.  Тогда  вектора
клавиатуры остаются одни,  и система хорошо себя ведет независимо
от  резидентных  программ,  аварийных  завершений  программ   при
тестировании    или    неожиданных    завершений    программы   в
производственной системе.

     Требуемое использование get_char лишает вас трех стандартных
возможностей Си:

    - вы не сможете использовать стандартные библиотечные функции
scanf  или  getchar,   поскольку  ни  одна  из  этих  функций  не
использует функцию get_char;

    - вы не сможете воспользоваться стандартной функцией ввода  с
консоли (getch), предусмотренной в Турбо Си;

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

     Потеря  функций scanf и getchar -  это  небольшая потеря для
программирования диалога.  Эти функции бесполезны в интерактивной
среде.  Они являются функциями буферизованного  ввода, требующими
нажатия клавиши <Ввод>  для завершения ввода символа  или строки;
кроме  того,  они нечувствительны к расположению курсора  и длине
поля.  Эти  функции  дублируют  свой  ввод  в  стандартный вывод,
соблюдая  соглашения  командной    строки   ДОС,   и   они  будут
дублировать  изображения двойных символов  при вводе управляющего
символа.  Если введена клавишная комбинация  Упр/С, функции могут
аварийно   завершить   программу.   Функции   плохо   работают  с
функциональными  или курсорными  клавишами.  Турбо Си включает их
для  поддержки совместимости с UNIX.   Эти функции  происходят из
компьютерных систем с телетайпными терминалами.

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

            Текстовый файл окна подсказки
-----------------------------------------------------------------

     Окна подсказки  появляются,  когда   пользователь   нажимает
функциональную  клавишу  подсказки,  описанную в текстовом файле.
Текстовый файл подсказки - это  ASCII-файл,  который  вы  строите
текстовым  редактором  Турбо  Си  или  любым  другим  редактором,
который может создавать ASCII-файлы.

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

ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
¦                                                               ¦
¦                                                     ¦
¦                    Enter the name of the                      ¦
¦                    employee as last name,                     ¦
¦                    comma, first name, viddle                  ¦
¦                    initial. Example:                          ¦
¦                    Hart, William S                            ¦
¦                                                     ¦
¦                    Enter the employee number                  ¦
¦                    with from I to life digits.                ¦
¦                    Example: 12345                             ¦
¦                                                          ¦
¦                                                               ¦
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

          Рис. 7.1. Пример файла подсказки

     Идентификатор окна  подсказки  состоит   ровно   из   восьми
символов и окружается угловыми скобками,  как показано на рисунке
7.1.  Каждый идентификатор появляется в своей собственной строке,
последней строкой файла должен быть лексический вход.  На рисунке
7.2 приведены два окна  подсказки,  которые  будут  отображены  в
результате этих описаний.

ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
¦                                                               ¦
¦      ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬                           ¦
¦      ¦ Enter the name of the      ¦                           ¦
¦      ¦ employee as last name,     ¦                           ¦
¦      ¦ comma, first name, middle, ¦                           ¦
¦      ¦ initial. Example:          ¦                           ¦
¦      ¦ Hart, William S            ¦                           ¦
¦      ¦  [Help] to return          ¦                           ¦
¦      АДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ                           ¦
¦                                                               ¦
¦                      ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬          ¦
¦                      ¦ Enter the employee number   ¦          ¦
¦                      ¦ with from 1 to five digits. ¦          ¦
¦                      ¦ Example: 12345              ¦          ¦
¦                      ¦  [Help] to return           ¦          ¦
¦                      АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ          ¦
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

          Рис. 7.2. Примеры окон подсказки

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

Листинг 7.1: tcprogs.hlp


 Press 1, 2, or 3
 for a pithy maxim.

 Use arrow keys to move the cursor bars.
 Use Enter to make the selection.

 Arrows move the cursor bar.
 Enter will select the poem
 under the cursor bar.
 Press a digit (1-5) to
 select any other poem.

 Move poem with arrow keys
 Select poem with 1 - 5
 Use + to bring poem forward
 Use - to push poem back

 Enter the name of the person
 who is placing the order.
Enter the address of the person who is placing the order. The State may be one of these: VA, NC, SC, GA, FL Enter the phone number of the person who is placing the order Enter the amount of the order --------Cursor Movement----- --------Page Movement-------- arrows = move text cursor Ctrl-Home = Beginning of File Ctrl-T = Top of Window Ctrl-End = End of File Ctrl-B = Bottom of Window PgUp = Previous Page Ctrl -> = Next Word PgDn = Next Page Ctrl <- = Previous Word Home = Beginning of Line --------Editor Control------- End = End of Line Scroll Lock = No Auto Reform --------Block Controls----- ---------Edit Commands-------- F4 = Form Paragraph F2 or Esc = Done F5 = Mark Block Beginning F3 = Erase File F6 = Mark Block End Ins = Toggle Insert Mode F7 = Move Block Del = Delete Char F8 = Copy Block <-- = Rubout F9 = Delete Block Ctrl-D = Delete Word F10 = Unmark Block Alt-D = Delete Line Функции подсказки ----------------------------------------------------------------- Для введения контекстно-управляемых окон подсказки в ваши программы необходимо к ним добавить два вызова функций, которые
Предыдущая страница Следующая страница
1 ... 11 12 13 14 15 16 17  18 19 20 21 22 23 24 ... 43
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (1)

Реклама