Основы программирования в Linux
Основы программирования в Linux читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
<b>#include <curses.h></b><b>int mvwin(WINDOW *window_to move, int new_y, int new x);</b><b>int wrefresh(WINDOW *window_ptr);</b><b>int wclear(WINDOW *window_ptr);</b><b>int werase(WINDOW *window_ptr);</b><b>int touchwin(WINDOW *window_ptr);</b><b>int scrollok(WINDOW *window_ptr, bool scroll_flag);</b><b>int scroll(WINDOW *window_ptr);</b>Функция
mvwinmvwinФункции
wrefreshwclearweraseWINDOWФункция
touchwinwrefreshДве функции
scrollscrollokscrollwsctlА теперь выполните упражнение 6.4.
Теперь, зная, как управлять несколькими окнами, вы можете включить эти новые функции в программу multiw1.c. Для краткости проверка ошибок не приводится.
1. Как обычно, вставьте первыми отсортированные объявления:
#include <unistd.h>#include <stdlib.h>#include <curses.h>int main() { WINDOW *new_window_ptr; WINDOW *popup_windov_ptr; int x loop; int y_loop; char a_letter = 'a'; initscr();2. Заполните базовое окно символами, обновляя физический экран, когда заполнен логический экран:
move(5, 5); printw("%s", "Testing multiple windows"); refresh(); for (y_loop = 0; y_loop < LINES - 1; y_loop++) { for (x_loop = 0; x_loop < COLS - 1; x_loop++) { mvwaddch(stdscr, y_loop, x_loop, a_letter); a_letter++; if (a_letter > 'z') a_letter = 'a'; } } /* Обновление экрана */ refresh(); sleep(2);3. Теперь создайте окно 10×20 и вставьте в него текст перед прорисовкой окна на экране:
new_window_ptr = newwin(10, 20, 5, 5); mvwprintw(new_window_ptr, 2, 2, "%s", "Hello World"); mwwprintw(new_window_ptr, 5, 2, "%s", "Notice how very long lines wrap inside the window"); wrefresh(new_window_ptr); sleep(2);4. Измените содержимое фонового окна. Когда вы обновите экран, окно, на которое указывает
new_window_ptr a_letter = '0'; for (y_lоор = 0; y_lоор < LINES - 1; y_lоор++) { for (х_lоор = 0; xloop < COLS - 1; х_lоор++) { mvwaddch(stdscr, y_loop, х_lоор, a_letter); a_letter++; if (a_letter > '9') a_letter = '0'; } } refresh(); sleep(2);5. Если вы выполните вызов для обновления нового окна, ничего не изменится, поскольку вы не изменяли новое окно:
wrefresh(new_window_ptr); sleep(2);6. Но если вы сначала воспользуетесь функцией
touchwin touchwin(new_window_ptr); wrefresh(new_window_ptr); sleep(2);7. Добавьте еще одно накладывающееся окно с рамкой вокруг него.
popup_window_ptr = newwin(10, 20, 8, 8); box(popup_window_ptr, '|', '-'); mvwprintw(popup_window_ptr, 5, 2, "%s", "Pop Up Window!"); wrefresh(popup_window_ptr); sleep(2);8. Поиграйте с новыми всплывающими окнами перед их очисткой и удалением.
touchwin(new_window_ptr); wrefresh(new_window_ptr); sleep(2); wclear(new_window_ptr);
