NCurses - newpad()



  • Hallo Freunde der Linux - Programmierer in C!

    Es geht um das Thema NCurses, insbes. um die Funktion newpad().

    Leider habe ich bis jetzt noch nicht richtig verstanden wozu die Funktion newpad() gut sein soll und wann man sie braucht.

    Ich habe hierzu ein Beispiel Quellcode und ein Zitat aus dem Buch

    Programmers Guide to NCurses von Dan Gookin

    hier mit eingefuegt. Ist zwar auf Englisch, jedoch vergeblich.

    Danke im voraus.

    Listing 11-1: bigpad1.c

    #include <curses.h>
    
    int main()
    {
    	WINDOW *p;
    	int x,c;
    
    	initscr();
    
    /* create a new pad */
    	p = newpad(50,100);
    	if( p == NULL )
    	{
    		addstr("Unable to create new pad");
    		refresh();
    		endwin();
    		return(1);
    	}
    
    	addstr("New pad created");
    	refresh();
    	getch(); /* Warte auf Tastendruck */
    	endwin();
    	return 0;
    }
    

    Quelle: http://www.c-for-dummies.com/ncurses/

    In NCurses, there are windows, but there are also pads. A pad is a super
    sized, Brobdingnagian window (or can be). Unlike regular windows, which can be
    at least one character in size and at most the same size as the terminal
    screen, a pad can be any size, up to as much as memory allows. This chapter explores the possibilities of pads.

    The Monster Window

    Pads are not really the same things as windows in a number of interesting and useful ways. About the most obvious is that a pad can be any size, from one character on up to many columns and rows, far beyond what can be seen on the screen at once.

    Making a Pad

    Pads are created like windows. The WINDOW type is used to define the ariable just like a window, though a new command is used to actually create the pad:

    newpad(rows,cols)

    rows and cols set the height and width of the pad in characters. Values
    range from 1 up to however large a pad memory can handle. The value returned from newpad() is the address of a WINDOW structure in memory [see Listing 11-1], which is exactly the same as for a regular window, though as you'll read in a few paragraphs, pads and windows have differences.

    Quelle: Programmer's Guide to NCurses, Seite 131 - 132, ISBN: 978-0-470-10759-1



  • Alle Informationen dazu hast du quasi schon zitiert!

    Unter ncurses sind windows nur „Kacheln“ (= tiles) des Konsolenfesters. pads hingegen lassen sich mit beliebiger Größe erstellen. Dazu muss dann aber jedesmal beim Neuzeichnen mit angegeben werden welcher Ausschnitt des pads im Konsolenfenster gezeichnet werden soll. Außerdem muss man mit pads ein paar andere Funktionen als für windows verwenden, da diese intern wahrscheinlich etwas anders aufgebaut sind als windows. Näheres dazu steht auch in der manpage curs_pad.

    Pads sind also nichts anderes als windows, mit denen es deutlich einfacher ist große Bereiche zu zeichnen.



  • Danke.


Anmelden zum Antworten