Ncurses: Panels
Erscheinungsbild
<<< ncurses-Startseite | ncurses | << Inhaltsverzeichnis |
< Fenster | Menüs > |
Ncurses-Fenster sind gut verwendbar, solange sie nebeneinander platziert sind. Überlappen sich Fenster jedoch, dann kann es kompliziert werden. Aus diesem Grund kennt ncurses sogenannte Panels. Diese bieten Mechanismen, Fenster auch in z-Richtung zu verwalten. Panels gehören zwar zu ncurses, sind aber in eine eigene Bibliotheksdatei ausgelagert.
Ein neues Panel erzeugen:
PANEL *new_panel(WINDOW *win);
Reservierten Panel- Speicherplatz freigeben:
int del_panel(PANEL *pan);
Panelanzeige manipulieren:
int bottom_panel(PANEL *pan); // Panel nach hinten verschieben int top_panel(PANEL *pan); // Panel in den Vordergrund holen int show_panel(PANEL *pan); // Panel anzeigen int hide_panel(PANEL *pan); // Panel verstecken
Vorne-, hintenliegendes Panel eruieren (pan=0
: top bzw. bottom):
PANEL *panel_above(const PANEL *pan) PANEL *panel_below(const PANEL *pan)
Panels updaten:
void update_panels();
Beispiel
[Bearbeiten]#include <panel.h> #include <stdlib.h> WINDOW *win1, *win2; PANEL *pan1, *pan2; void quit(void) { del_panel(pan1); del_panel(pan2); delwin(win1); delwin(win2); endwin(); } int main(void) { int flag=0; initscr(); atexit(quit); clear(); noecho(); curs_set(0); cbreak(); keypad(stdscr, 1); start_color(); init_pair(1, COLOR_YELLOW, COLOR_BLUE); init_pair(2, COLOR_BLACK, COLOR_WHITE); init_pair(3, COLOR_BLACK, COLOR_YELLOW); win1 = newwin(10, 25, 5, 10); win2 = newwin(10, 25, 10, 15); box(win1, ACS_VLINE, ACS_HLINE); box(win2, ACS_VLINE, ACS_HLINE); pan1 = new_panel(win1); pan2 = new_panel(win2); bkgd(COLOR_PAIR(1)); wbkgd(win1, COLOR_PAIR(2)); wbkgd(win2, COLOR_PAIR(3)); mvaddstr(2,4, "F9 beendet das Programm"); mvwaddstr(win1, 2, 3, "Drücke eine Taste"); mvwaddstr(win2, 7, 3, "Drücke eine Taste"); update_panels(); doupdate(); while(getch() != KEY_F(9)) { if (flag==0) { top_panel(pan1); flag = 1; } else { top_panel(pan2); flag = 0; } update_panels(); doupdate(); } return (0); }
Compilieren, Linken:
gcc -o bsp bsp.c -lpanel -lncurses
<<< ncurses-Startseite | ncurses | << Inhaltsverzeichnis |
< Fenster | Menüs > |