Главная страница
Навигация по странице:

  • include

  • Лекции. Основные понятия и определения


    Скачать 1.94 Mb.
    НазваниеОсновные понятия и определения
    Дата27.03.2018
    Размер1.94 Mb.
    Формат файлаdocx
    Имя файлаЛекции.docx
    ТипКонтрольные вопросы
    #39570
    страница49 из 58
    1   ...   45   46   47   48   49   50   51   52   ...   58

    16.5. Пример


    Формирование окон сообщений, подсказок, полей ввода.

    Набор функций:

    - message - вывод сообщений,

    - status - вывод подсказок,

    - diagnos - вывод диагностических сообщений,

    - vvod - формирование полей ввода,

    - out_text - вывод строки в окно,

    - init_window - инициализировать окно,

    - clear_window - очистить окно,

    - ramka - нарисовать рамку окна.
    /*****************************/

    /* MESSAGE */

    /* Вывести сообщение */

    /*****************************/

    #include

    #define EKRAN BLACK
    void message(int nom, // N сообщения

    int reg){ // режим: FULL=1-вывод, CLEAR=0-очистить окно

    static struct mes{

    int beg_x, // Коорди-

    beg_y, // наты

    end_x, // ок-

    end_y, // на

    char regim; // r-разрядка, p-плотный

    char* text; // Текст сообщения

    }def[ ]={ // Описание сообщений

    28,2,52,4,'r',"ВВОД ДАННЫХ",

    19,12,61,14,'p',"Имя файла входных данных",

    .........................................

    19,12,61,14,'r',"ВВОД ДАННЫХ ЗАКОНЧЕН"

    };

    struct mes *p; // Указатель на элемент описания
    p=&def[nom-1];

    if(reg){

    init_window(p->beg_x, p->beg_y, p->end_x, p->end_y, BLACK,

    LIGHTGRAY);

    out_text(2, 2, 200, p->regim, p->text);

    }else{

    clear_window(p->beg_x, p->beg_y, p->end_x, p->end_y, EKRAN);

    }

    } // End message

    16.6. Пример(продолжение)


    Приведенные ниже функции включены в файл window.c.

    /* Вывод строки в окно */

    void out_text(int x, // Начальная позиция курсора по X

    int y, // Начальная позиция курсора по Y

    int kol, // Число выводимых символов

    int reg, // Режим: r-разрядка, p-плотный

    char *text){ // Текст сообщения

    int i;
    gotoxy(x, y);

    for(i=0; i

    if(reg=='r')putch(' ');

    if(*(text+i)=='\n'){

    y++;

    gotoxy(x, y);

    }else{

    putch(*(text+i));

    }

    }

    } // End out_text
    Замечание. Символы второй кодовой страницы надо задавать в виде:

    \<код символа в 8-й системе счисления>. См. ниже пример.
    /* Рисование рамки */

    void ramka(int width, // ширина(в позициях)

    int height){ // высота(в строках)

    static unsigned char cont[ ]="+\226|"; //Символы рамки

    int i;
    gotoxy(1, 1);

    putch(cont[0]);

    for(i=2; iputch(cont[1]);

    putch(cont[0]);

    for(i=2; i

    gotoxy(1, i);

    putch(cont[2]);

    gotoxy(width, i);

    putch(cont[2]);

    }

    gotoxy(1, height);

    putch(cont[0]);

    for(i=2; iputch(cont[1]);

    putch(cont[0]);

    } // End ramka

    Вопросы для самопроверки и контроля

    Вопросы для самопроверки

    1. Какой заголовочный файл нужен для работы с окнами?

    2. Укажите начальные координаты курсора в текстовом режиме.
    Контрольные вопросы

    1. Какие функции работают в абсолютных координатах экрана?

    2. Что делает функция textattr?
    1   ...   45   46   47   48   49   50   51   52   ...   58


    написать администратору сайта