Основы программирования в Linux - Мэтью Нейл Страница 101

Тут можно читать бесплатно Основы программирования в Linux - Мэтью Нейл. Жанр: Компьютеры и Интернет / Интернет. Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте FullBooks.club (Фулбукс) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Основы программирования в Linux - Мэтью Нейл

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних просмотр данного контента СТРОГО ЗАПРЕЩЕН! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту pbn.book@yandex.ru для удаления материала


Основы программирования в Linux - Мэтью Нейл краткое содержание

Прочтите описание перед тем, как прочитать онлайн книгу «Основы программирования в Linux - Мэтью Нейл» бесплатно полную версию:
В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Основы программирования в Linux - Мэтью Нейл читать онлайн бесплатно

Основы программирования в Linux - Мэтью Нейл - читать книгу онлайн бесплатно, автор Мэтью Нейл

<b>#include &lt;curses.h&gt;</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, поэтому могут ссылаться на конкретное окно, а не на окно stdscr.

Функция touchwin довольно специальная. Она информирует библиотеку curses о том, что содержимое окна, на которое указывает ее параметр, было изменено. Это означает, что curses всегда будет перерисовывать такое окно при следующем вызове функции wrefresh, даже если вы на самом деле не меняли содержимое этого окна. Эта функция очень полезна для определения отображаемого окна при наличии нескольких перекрывающихся окон, загромождающих экран.

Две функции scroll управляют прокруткой окна. Функция scrollok при передаче логического значения true (обычно ненулевого) включает прокрутку окна. По умолчанию окна не прокручиваются. Функция scroll просто прокручивает окно на одну строку вверх. В некоторые реализации библиотеки curses входит и функция wsctl, которая также принимает количество строк для прокрутки, которое может быть и отрицательным числом. Мы вернемся к прокрутке немного позже в этой главе.

А теперь выполните упражнение 6.4.

Упражнение 6.4. Управление множественными окнами

Теперь, зная, как управлять несколькими окнами, вы можете включить эти новые функции в программу multiw1.c. Для краткости проверка ошибок не приводится.

1. Как обычно, вставьте первыми отсортированные объявления:

#include &lt;unistd.h&gt;

#include &lt;stdlib.h&gt;

#include &lt;curses.h&gt;

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(&quot;%s&quot;, &quot;Testing multiple windows&quot;);

 refresh();

 for (y_loop = 0; y_loop &lt; LINES - 1; y_loop++) {

  for (x_loop = 0; x_loop &lt; COLS - 1; x_loop++) {

   mvwaddch(stdscr, y_loop, x_loop, a_letter);

   a_letter++;

   if (a_letter &gt; 'z') a_letter = 'a';

  }

 }

 /* Обновление экрана */

 refresh();

 sleep(2);

3. Теперь создайте окно 10×20 и вставьте в него текст перед прорисовкой окна на экране:

 new_window_ptr = newwin(10, 20, 5, 5);

 mvwprintw(new_window_ptr, 2, 2, &quot;%s&quot;, &quot;Hello World&quot;);

 mwwprintw(new_window_ptr, 5, 2, &quot;%s&quot;,

  &quot;Notice how very long lines wrap inside the window&quot;);

 wrefresh(new_window_ptr);

 sleep(2);

4. Измените содержимое фонового окна. Когда вы обновите экран, окно, на которое указывает new_window_ptr, будет затемнено:

 a_letter = '0';

 for (y_lоор = 0; y_lоор &lt; LINES - 1; y_lоор++) {

  for (х_lоор = 0; xloop &lt; COLS - 1; х_lоор++) {

   mvwaddch(stdscr, y_loop, х_lоор, a_letter);

   a_letter++;

   if (a_letter &gt; '9') a_letter = '0';

  }

 }

 refresh();

 sleep(2);

5. Если вы выполните вызов для обновления нового окна, ничего не изменится, поскольку вы не изменяли новое окно:

 wrefresh(new_window_ptr);

 sleep(2);

6. Но если вы сначала воспользуетесь функцией touchwin и заставите библиотеку curses думать, что окно было изменено, следующий вызов функции wrefresh снова отобразит новое окно на переднем плане.

 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, &quot;%s&quot;, &quot;Pop Up Window!&quot;);

 wrefresh(popup_window_ptr);

 sleep(2);

8. Поиграйте с новыми всплывающими окнами перед их очисткой и удалением.

 touchwin(new_window_ptr);

 wrefresh(new_window_ptr);

 sleep(2);

 wclear(new_window_ptr);

Перейти на страницу:
Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.
Комментарии / Отзывы
    Ничего не найдено.