Лекции. Основные понятия и определения
Скачать 1.94 Mb.
|
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; i 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; i putch(cont[0]); } // End ramka Вопросы для самопроверки и контроляВопросы для самопроверки1. Какой заголовочный файл нужен для работы с окнами? 2. Укажите начальные координаты курсора в текстовом режиме. Контрольные вопросы1. Какие функции работают в абсолютных координатах экрана? 2. Что делает функция textattr? |