⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 curses.3

📁 该程序是C语言编写的
💻 3
字号:
CURSES(3)		MS-DOS Programmer's Manual		  CURSES(3)

NAME
   curses - screen/window management library

DESCRIPTION
   Curses is a library of screen and window management routines. It is modeled
   after the UNIX curses and ncurses libraries. Normally, programs written for
   PCcurses should be easily ported to UNIX, and vice versa.

   To use the routines, the function initscr() must first be called. This cre-
   ates two 'windows' for the user: stdscr and curscr. Stdscr is the default
   window for the user to make changes on, and curscr reflects the current
   contents of the physical display screen. The user writes or edits the std-
   scr window to his liking, then calls the refresh() function to make curscr
   and the physical screen look like stdscr. When the user program terminates,
   it should call the endwin() function to restore things to normal.

   There are all sorts of window manipulation routines available to the pro-
   grammer: auxiliary windows may be created, edited, moved and deleted. The
   terminal may be set in many different modes, output text may be attributed
   with blink, blank, bold and reverse attributes. There are window-specific
   printf- and scanf-like routines, routines for scrolling, box-drawing, win-
   dow overlaying, clearing routines etc. Curses also handles terminal func-
   tion keys, which is enables by calling the keypad() function.

   The handling of character attributes is different on MGA, CGA and Hercules
   adapters. The package has been tested with them all. EGA has not been tes-
   ted, but should also work except for special screen modes.

   For more and detailed information, see the library source codes. All curses
   functions are preceded by a brief but complete description.

COMPILING
   All programs that use curses facilities should include the file <curses.h>,
   and during linking, the library ?curses.lib should be specified to the lin-
   ker ('?' is 's', 'c' 'm' or 'l' for small, compact, medium or large memory
   model respectively).

FUNCTIONS
   Below is a list over the available functions, together with a brief de-
   scription of what they do. In general, functions whose names start with
   'w' differ from the one without 'w' (like wmove vs. move) signify that
   a specific window is used. Without a 'w', sdtscr is implied. The functions
   that start with 'mv' before the 'genereic' function name signify that a
   cursor motion should be made before the actual work. 'mv' and 'w' combine
   as expected.

   Most routines that return an int will return the manifest constant ERR if
   there is a failure during execution. Routines that return a char actually
   return an int, so that ERR does not conflict with the character code 0xff.
   All IBM PC characters from 0 to 0xff are allowed for usage with curses.
   There are (non-portable) character output routines to write the special
   IBM fonts for characters with ASCII code less than 0x20 (control charac-
   ters).

   Some routines, like {mv}{w} printw() and {mv}{w}scanw() return a meaningful
   positive value if the operation is successful.

   The curses package uses some predefined types, variables and manifest con-
   stants that are also available to the programmer. For example, the ERR and
   OK macros should be used to test for failure of curses functions. Don't use
   the numerical values, since those are different for different versions of
   curses!

   There are also a few globally accessible variables that should not be tou-
   ched by the application program. Those untouchable variables have names
   starting with an underscore (_) to avoid conflicts. The user-accessible
   types, variables and constants are (there are a number of other constants
   defining character attribute names and function key names - consult the
   <curses.h> and <curspriv.h> include files for details):

   (manifest constants)

   	TRUE				boolean true
	FALSE				boolean false
	ERR				unsuccessfull operation
	OK				successfull operation

   (types)

   	WINDOW				a window structure type
	bool				boolean flag type

   (variables)

   	WINDOW curscr			physical display image
	WINDOW stdscr			default user drawing board
   	int    LINES			terminal height
	int    COLS			terminal width

   The following is an alphabetical list of the curses functions, together
   with their types, parameters and a short comment for each. Win is a win-
   dow; ch, l, r, t, b, tl, tr, bl and br are characters; buf is a character
   buffer; attrs is an attribute bit map; bf is a boolean flag. Note that
   `character' return values in this context usually are 16 bits. Guaranteed
   portable functions are marked with an asterisk (*):


*  int   addch(ch)			put char in stdscr
   int	 addrawch(ch)			put raw char in stdscr
*  int	 addstr(str)			put string in stdscr
   void	 attroff(attrs)			clear attribute(s) in stdscr
   void	 attron(attrs)			add attribute(s) in stdscr
   void	 attrset(attrs)			set stdscr char attributes
   int	 baudrate()			dummy for compatibility
   void	 beep()				ring the bell
   void	 border(l,r,t,b,tl,tr,bl,br)	Set non-std box characters
*  void	 box(win,l,t)			box in a window, with given characters
*  void	 cbreak()			set terminal cbreak mode
*  void	 clear()			clear stdscr
*  void	 clearok(win,bf)		marks window for screen clear
*  int	 clrtobot()			clear end of stdscr
*  int	 clrtoeol()			clear end of line in stdscr
*  void	 crmode()			set terminal cbreak mode
   void	 cursoff()			turns off hardware cursor
   void	 curson()			turns on hardware cursor
   void	 def_prog_mode()		save TTY modes
   void	 def_shell_mode()		compatibility dummy
*  int	 delch()			delete a char in stdscr
*  int	 deleteln()			delete a line in stdscr
*  void	 delwin(win)			delete a window or a subwindow
   void	 doupdate()			update physical screen
*  void	 echo()				set terminal echo mode
*  int	 endwin()			cleanup and curses finitialization
*  void	 erase()			erase stdscr
   int	 erasechar()			return char delete character
   int	 fixterm()			dummy for compatibility
   void	 flash()			flash terminal screen
   void  flushinp()			kill pending keyboard input
*  int	 getch()	(#def macro)	get character via stdscr
*  int	 getstr(buf)			get string via stdscr to a buffer
*  void	 getyx(win,y,x)			get a window's cursor position
*  int	 gettmode()			dummy for compatibility
   void	 idlok(win,bf)			dummy for compatibility
*  int	 initscr()			curses initialization (ret 1 if OK)
*  int	 inch()				get char at stdscr cursor
*  int	 insch(ch)			insert character in stdscr
   int	 insrawch(ch)			insert raw character in stdscr
*  int	 insertln()			insert an empty line in stdscr
   void	 keypad(win,bf)			marks a window for keypad usage
   int   killchar()			return line delete character
*  void	 leaveok(win,bf)		marks window for cursor 'update leave'
*  char *longname()			returns terminal description string
   void  meta(win,bf)			marks window for meta (dummy function)
*  int	 move(y,x)			move cursor in stdscr
*  int	 mvaddch(y,x,ch)		move & put char in stdscr
   int	 mvaddrawch(y,x,ch)		move & put raw char in stdscr
*  int	 mvaddstr(y,x,str)		move & put string in stdscr
   int	 mvclrtobot(y,x)		move & clear end of stdscr
   int	 mvclrtoeol(y,x)		move & clear lineend in stdscr
*  int	 mvcur(oldy,oldx,y,x)		move terminal cursor to <y,x>
*  int	 mvdelch(y,x)			move & delete a char in stdscr
   int	 mvdeleteln(y,x)		move & delete a line in stdscr
*  int	 mvgetch(y,x)			move & get char to stdscr
*  int	 mvgetstr(y,x,buf)		move & get string via stdscr to buffer
*  int	 mvinch(y,x,)			move & get char at stdscr cursor
*  int	 mvinsch(y,x,ch)		move & insert char in stdscr
   int	 mvinsrawch(y,x,ch)		move & insert raw char in stdscr
   int	 mvinsertln(y,x)		move & insert new line in stdscr
*  int	 mvprintw(y,x,fmt,args)		move & print string in stdscr
*  int	 mvscanw(y,x,fmt,args)		move & get values via stdscr
*  int	 mvwaddch(win,y,x,ch)		move & put char in a window
   int	 mvwaddrawch(win,y,x,ch)	move & put raw char in a window
*  int	 mvwaddstr(win,y,x,str)		move & put string in a window
   int	 mvwclrtobot(win,y,x)		move & clear end of a window
   int	 mvwclrtoeol(win,y,x)		move & clear lineend in a window
*  int	 mvwdelch(win,y,x)		move & delete a char in a window
   int	 mvwdeleteln(win,y,x)		move & delete a line in a window
*  int	 mvwgetch(win,y,x)		move & get char to a window
*  int	 mvwgetstr(win,y,x,str)		move & get string to a window
*  int	 mvwinch(win,y,x)		move & get char at window cursor
*  int	 mvwinsch(win,y,x,ch)		move & insert char in a window
   int	 mvwinsrawch(win,y,x,ch)	move & insert raw char in a window
   int	 mvwinsertln(win,y,x)		move & insert new line in window
   int	 mvwin(win,y,x)			move window on physical screen
*  int	 mvwprintw(win,x,y,fmt,args)	move & print string in a window
*  int	 mvwscanw(win,y,x,fmt,args)	move & get values via a window
*  WINDOW *newwin(lines,cols,begy,begx)	create a new window
*  void	 nl()				set terminal cr-crlf mapping mode
*  void	 nocbreak()			unset terminal cbreak mod
*  void	 nocrmode()			unset terminal cbreak mode
   void	 nodelay(win,bf)		marks window for no input wait
*  void	 noecho()			unset terminal echo mode
*  void	 nonl()				unset terminal cr-crlf mapping mode
*  void	 noraw()			unset raw terminal mode
*  void	 overlay(win1,win2)		overlay one window on another
*  void	 overwrite(win1,win2)		overwrite one window on another
*  int	 printw(fmt,args)		print string in stdscr
*  void	 raw()				set raw terminal mode
   void	 refrbrk(bf)			set screen update break mode
*  void	 refresh()			refresh stdscr
   int	 resetterm()			dummy for compatibility
*  int	 resetty()			restore terminal I/O modes
   void	 reset_prog_mode()		restore terminal I/O modes
   void	 reset_shell_mode()		set terminal to default modes
   int	 saveoldterm()			dummy for compatibility
   int	 saveterm()			dummy for compatibility
*  int	 savetty()			save terminal I/O modes
*  int	 scanw(fmt,args)		get values via stdscr
*  void	 scroll(win)			scroll scrolling region of a window
*  void	 scrollok(win,bf)		marks a window to allow scroll
   int	 setscrreg(miny,maxy)		define stdscr's scroll region
*  int	 setterm()			dummy for compatibility
   int	 setupterm(term,fd,errret)	set up terminal (no-op on PC)
*  void	 standend()			start normal chars in stdscr
*  void	 standout()			start standout chars in stdscr
*  WINDOW *subwin(win,lines,cols,begy,begx) create a sub-window in window win
   int	 tabsize(ts)			set/get tabsize of stdscr
*  void	 touchwin(win)			mark a window as totally modified
*  char	*unctrl(ch)			char-to-string converter
   int	 ungetch(ch)	(#def macro)	push back a character to input */
*  int	 waddch(win,ch)			put char in a window
   int	 waddrawch(win,ch)		put raw char in a window
*  int	 waddstr(win,str)		put string in a window
   void	 wattroff(win,attrs)		clear attribute(s) in window
   void	 wattron(win,attrs)		add attribute(s) in window
   void	 wattrset(win,attrs)		set window char attributes
   void	 wborder(win,l,r,t,b,tl,tr,bl,br) Set non-std box characters
   int	 wbox(win,miny,minx,maxy,maxx,l,r) draw a box inside a window
*  void	 wclear(win)			clear a window
*  int	 wclrtobot(win)			clear end of a window
*  int	 wclrtoeol(win)			clear end of line in a window
*  int	 wdelch(win)			delete a char in a window
*  int	 wdeleteln(win)			delete a line in a window
*  void	 werase(win)			erase a window
*  int	 wgetch(win)			get char via a window
*  int	 wgetstr(win,buf)		get string via window to a buffer
*  int	 winch(win)			get char at window cursor
*  int	 winsch(win,ch)			insert character in a window
   int	 winsrawch(win,ch)		insert raw character in a window
*  int	 winsertln(win)			insert new line in a window
*  int	 wmove(win,y,x)			move cursor in a window
   void	 wnoutrefresh(win)		create internal screen image
*  int	 wprintw(win,fmt,args)		print string in a window
*  void	 wrefresh(win)			refresh window
*  int	 wscanw(win,fmt,args)		get values via a window
   int	 wsetscrreg(win,miny,maxy)	define a window's scrolling region
*  void	 wstandend(win)			start normal chars in window
*  void	 wstandout(win)			start standout chars in window
   int	 wtabsize(win,ts)		set/get tabsize of a window
   int	 wungetch(ch)			push back a character to input */

MISSING FUNCTIONS

   The following functions existing in UNIX cursees are missing in PCcurses:

   getcap(nam)				get terminal capability 'name'

FUNCTIONS UNIQUE TO PCcurses

   The following functions are (to the author's knowledge) unique to PCcurses:

   int	 addrawch(ch)			put raw char in stdscr
   int	 waddrawch(win,ch)		put raw char in a window
   int	 mvaddrawch(y,x,ch)		move & put raw char in stdscr
   int	 mvwaddrawch(win,y,x,ch)	move & put raw char in a window
   int   insrawch(ch)			insert raw character in stdscr
   int   winsrawch(win,ch)		insert raw character in a window
   int	 mvinsrawch(y,x,ch)		move & insert raw char in stdscr
   int	 mvwinsrawch(win,y,x,ch)	move & insert raw char in a window
   int   tabsize(ts)			set/get tabsize of stdscr
   int	 wtabsize(win,ts)		set/get tabsize of a window

SEE ALSO
   "Screen Updating And Cursor Movement Optimization: A Library Package" -
   Kenneth C.R.C. Arnold
   "The Ncurses Reference Manual" - Pavel Curtis, Cornell University

BUGS
   The terminal raw I/O mode is implemented by reading characters directly
   from the BIOS. This means that the programmer must not use the normal
   I/O routines to the screen or from the keyboard, since they will trap the
   MS-DOS ^C, ^S, ^Q and ^P characters and thus nullify the raw input.

   Also, if the terminal is in normal or cbreak mode and the programmer has
   trapped CTRL-BREAK by using signal(SIGINT,ownhandler), MS-DOS will still
   echo the characters '^C' on the screen when the character is intercepted.
   There seems to be no way to avoid this under MS-DOS (use raw mode in-
   stead, or redraw the whole screen).

   The function key support is hardware dependent. There is a table in char-
   get.c that maps keyboard scan codes from the keyboard to function key
   names. The one supplied works for IBM PC/XT/AT, and for most clones.

REVISION
   The current revision is v.1.4 (900114). If you find or correct bugs, or if
   you think up or implement enhancements, please contact the author. That way
   he can maintain an 'official' version of PCcurses, without too many local
   versions floating around.

AUTHOR
   Home:	   Bjorn Larsson		Work:	INFOVOX AB
		   Ynglingagatan 5,IV			Box 2503
		   S-113 47 Stockholm			S-171 02 Solna
		   SWEDEN				SWEDEN

		   UseNet: bl@infovox.se

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -