| initscr(); | - inicjalizacja - funkcję należy uruchomić jako pierwszą, |
| endwin(); | - zakończenie działania biblioteki, |
| okno = newwin(rozm_y, rozm_x, y, x); | - tworzenie okna (zarezerwowanie obszaru w pamięci), |
| delwin(okno); | - zniszczenie okna (usunięcie z pamięci), |
| wnoutrefresh(okno); | - funkcja odwzorowuje obszar pamięci okna na ekranie wirtualnym, |
| doupdate(); | - funkcja wyświetla ekran wirtualny na ekranie fizycznym. |
#include <time.h>
#include <curses.h>
int current_getch;
int doloop = 1;
static WINDOW *mainwnd;
static WINDOW *screen;
WINDOW *my_win;
int now_sec, now_min, now_hour, now_day, now_wday, now_month, now_year;
time_t now;
struct tm *now_tm;
void screen_init(void)
{
mainwnd = initscr();
noecho();
cbreak();
nodelay(mainwnd, TRUE);
refresh();
wrefresh(mainwnd);
screen = newwin(13, 27, 1, 1);
box(screen, ACS_VLINE, ACS_HLINE);
}
static void update_display(void)
{
curs_set(0);
mvwprintw(screen,3,6,"TIME: %d:%d:%d", now_hour, now_min, now_sec);
mvwprintw(screen,5,6,"DATE: %d-%d-%d", now_day, now_month, now_year);
mvwprintw(screen,7,6,"PRESS q TO END");
wrefresh(screen);
refresh();
}
void screen_end(void)
{
endwin();
}
void maketime(void)
{
now = time (NULL);
now_tm = localtime(&now);
now_sec = now_tm->tm_sec;
now_min = now_tm->tm_min;
now_hour = now_tm->tm_hour;
now_day = now_tm->tm_mday;
now_wday = now_tm->tm_wday;
now_month = now_tm->tm_mon + 1;
now_year = now_tm->tm_year + 1900;
}
int main(void)
{
screen_init();
while (doloop)
{
current_getch = getch();
if (current_getch == 113) doloop = 0;
maketime();
update_display();
sleep(1);
}
screen_end();
return 0;
}
|
| znak = getch(); | - odczytanie znaku z klawiatury i umieszczenie go w miejscu kursora w bierzącym oknie, |
| znak = mvgetch(y, x); | - odczytanie znaku z klawiatury i umieszczenie go w pozycji (y, x), |
| znak = wgetch(w); | - odczytanie znaku z klawiatury i umieszczenie go w miejscu kursora w oknie określonym przez w, |
| echo(); | - wywołanie funkcji spowoduje, że wprowadzane znaki będą widoczne, |
| noecho(); | - wywołanie funkcji spowoduje, że wprowadzane znaki NIE będą widoczne, |
| nodelay(okno, 1); | - powyższe wywołanie funkcji powoduje, że funkcja getch NIE oczekuje na znak, |
| nodelay(okno, 0); | - powyższe wywołanie funkcji powoduje, że funkcja getch oczekuje na znak (program jest wstrzymywany). |
| getstr(char *buf) | - funkcja wczytuje ciąg znaków, |
| getnstr(char *buf, int n) | - funkcja wczytuje co najwyżej n znaków, |
| printw(...) | - odmiana funkcji printf(), która działa w oknach, |
| scanw(...) | - odmiana funkcji scanf(), która działa w oknach, |