Основы программирования в 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>
Функция
mvwin
mvwin
Функции
wrefresh
wclear
werase
WINDOW
Функция
touchwin
wrefresh
Две функции
scroll
scrollok
scroll
wsctl
А теперь выполните упражнение 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);