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

📄 cursesw.h

📁 ncurses 库 可能有用酒用 没用就算了 我觉得还可以用
💻 H
📖 第 1 页 / 共 3 页
字号:
#endif  chtype         inch() const { return ::winch(w); }  // Retrieve attributed character under the current cursor position.  chtype         inch(int y, int x) { return ::mvwinch(w, y, x); }  // Move cursor to requested position and then retrieve attributed character  // at this position.  int            insch(chtype ch) { return ::winsch(w, ch); }  // Insert attributed character into the window before current cursor  // position.  int            insch(int y, int x, chtype ch) {    return ::mvwinsch(w, y, x, ch); }  // Move cursor to requested position and then insert the attributed  // character before that position.  int            insertln() { return ::winsdelln(w, 1); }  // Insert an empty line above the current line.  int            insdelln(int n=1) { return ::winsdelln(w, n); }  // If n>0 insert that many lines above the current line. If n<0 delete  // that many lines beginning with the current line.  int            insstr(const char *s, int n=-1) {    return ::winsnstr(w, s, n); }  // Insert the string into the window before the current cursor position.  // Insert stops at end of string or when the limit n is reached. If n is  // negative, it is ignored.  int            insstr(int y, int x, const char *s, int n=-1) {    return ::mvwinsnstr(w, y, x, s, n); }  // Move the cursor to the requested position and then perform the insstr()  // as described above.  int            attron (chtype at) { return ::wattron (w, at); }  // Switch on the window attributes;  int            attroff(chtype at) { return ::wattroff(w, static_cast<int>(at)); }  // Switch off the window attributes;  int            attrset(chtype at) { return ::wattrset(w, static_cast<int>(at)); }  // Set the window attributes;  int            color_set(short color_pair_number, void* opts=NULL) {    return ::wcolor_set(w, color_pair_number, opts); }  // Set the window color attribute;  int            chgat(int n, attr_t attr, short color, const void *opts=NULL) {    return ::wchgat(w, n, attr, color, opts); }  // Change the attributes of the next n characters in the current line. If  // n is negative or greater than the number of remaining characters in the  // line, the attributes will be changed up to the end of the line.  int            chgat(int y, int x,		       int n, attr_t attr, short color, const void *opts=NULL) {    return ::mvwchgat(w, y, x, n, attr, color, opts); }  // Move the cursor to the requested position and then perform chgat() as  // described above.  // -------------------------------------------------------------------------  // background  // -------------------------------------------------------------------------  chtype         getbkgd() const { return ::getbkgd(w); }  // Get current background setting.  int            bkgd(const chtype ch) { return ::wbkgd(w, ch); }  // Set the background property and apply it to the window.  void           bkgdset(chtype ch) { ::wbkgdset(w, ch); }  // Set the background property.  // -------------------------------------------------------------------------  // borders  // -------------------------------------------------------------------------  int            box(chtype vert=0, chtype  hor=0) {    return ::wborder(w, vert, vert, hor, hor, 0, 0, 0, 0); }  // Draw a box around the window with the given vertical and horizontal  // drawing characters. If you specify a zero as character, curses will try  // to find a "nice" character.  int            border(chtype left=0, chtype right=0,			chtype top =0, chtype bottom=0,			chtype top_left =0, chtype top_right=0,			chtype bottom_left =0, chtype bottom_right=0) {    return ::wborder(w, left, right, top, bottom, top_left, top_right,		     bottom_left, bottom_right); }  // Draw a border around the window with the given characters for the  // various parts of the border. If you pass zero for a character, curses  // will try to find "nice" characters.  // -------------------------------------------------------------------------  // lines and boxes  // -------------------------------------------------------------------------  int            hline(int len, chtype ch=0) { return ::whline(w, ch, len); }  // Draw a horizontal line of len characters with the given character. If  // you pass zero for the character, curses will try to find a "nice" one.  int            hline(int y, int x, int len, chtype ch=0) {    return ::mvwhline(w, y, x, ch, len); }  // Move the cursor to the requested position and then draw a horizontal line.  int            vline(int len, chtype ch=0) { return ::wvline(w, ch, len); }  // Draw a vertical line of len characters with the given character. If  // you pass zero for the character, curses will try to find a "nice" one.  int            vline(int y, int x, int len, chtype ch=0) {    return ::mvwvline(w, y, x, ch, len); }  // Move the cursor to the requested position and then draw a vertical line.  // -------------------------------------------------------------------------  // erasure  // -------------------------------------------------------------------------  int            erase() { return ::werase(w); }  // Erase the window.  int            clear() { return ::wclear(w); }  // Clear the window.  int            clearok(bool bf) { return ::clearok(w, bf); }  // Set/Reset the clear flag. If set, the next refresh() will clear the  // screen.  int            clrtobot() { return ::wclrtobot(w); }  // Clear to the end of the window.  int            clrtoeol() { return ::wclrtoeol(w); }  // Clear to the end of the line.  int            delch() { return ::wdelch(w); }  // Delete character under the cursor.  int            delch(int y, int x) { return ::mvwdelch(w, y, x); }  // Move cursor to requested position and delete the character under the  // cursor.  int            deleteln() { return ::winsdelln(w, -1); }  // Delete the current line.  // -------------------------------------------------------------------------  // screen control  // -------------------------------------------------------------------------  int            scroll(int amount=1) { return ::wscrl(w, amount); }  // Scroll amount lines. If amount is positive, scroll up, otherwise  // scroll down.  int            scrollok(bool bf) { return ::scrollok(w, bf); }  // If bf is TRUE, window scrolls if cursor is moved off the bottom  // edge of the window or a scrolling region, otherwise the cursor is left  // at the bottom line.  int            setscrreg(int from, int to) {    return ::wsetscrreg(w, from, to); }  // Define a soft scrolling region.  int            idlok(bool bf) { return ::idlok(w, bf); }  // If bf is TRUE, use insert/delete line hardware support if possible.  // Otherwise do it in software.  void           idcok(bool bf) { ::idcok(w, bf); }  // If bf is TRUE, use insert/delete character hardware support if possible.  // Otherwise do it in software.  int            touchwin()   { return ::wtouchln(w, 0, height(), 1); }  // Mark the whole window as modified.  int            untouchwin() { return ::wtouchln(w, 0, height(), 0); }  // Mark the whole window as unmodified.  int            touchln(int s, int cnt, bool changed=TRUE) {    return ::wtouchln(w, s, cnt, static_cast<int>(changed ? 1 : 0)); }  // Mark cnt lines beginning from line s as changed or unchanged, depending  // on the value of the changed flag.  bool           is_linetouched(int line) const {    return (::is_linetouched(w, line) ? TRUE:FALSE); }  // Return TRUE if line is marked as changed, FALSE otherwise  bool           is_wintouched() const {    return (::is_wintouched(w) ? TRUE:FALSE); }  // Return TRUE if window is marked as changed, FALSE otherwise  int            leaveok(bool bf) { return ::leaveok(w, bf); }  // If bf is TRUE, curses will leave the cursor after an update whereever  // it is after the update.  int            redrawln(int from, int n) { return ::wredrawln(w, from, n); }  // Redraw n lines starting from the requested line  int            redrawwin() { return ::wredrawln(w, 0, height()); }  // Redraw the whole window  int            doupdate()  { return ::doupdate(); }  // Do all outputs to make the physical screen looking like the virtual one  void           syncdown()  { ::wsyncdown(w); }  // Propagate the changes down to all descendant windows  void           syncup()    { ::wsyncup(w); }  // Propagate the changes up in the hierarchy  void           cursyncup() { ::wcursyncup(w); }  // Position the cursor in all ancestor windows corresponding to our setting  int            syncok(bool bf) { return ::syncok(w, bf); }  // If called with bf=TRUE, syncup() is called whenever the window is changed#ifndef _no_flushok  int            flushok(bool bf) { return ::flushok(w, bf); }#endif  void           immedok(bool bf) { ::immedok(w, bf); }  // If called with bf=TRUE, any change in the window will cause an  // automatic immediate refresh()  int            keypad(bool bf) { return ::keypad(w, bf); }  // If called with bf=TRUE, the application will interpret function keys.  int            meta(bool bf) { return ::meta(w, bf); }  // If called with bf=TRUE, keys may generate 8-Bit characters. Otherwise  // 7-Bit characters are generated.  int            standout() { return ::wstandout(w); }  // Enable "standout" attributes  int            standend() { return ::wstandend(w); }  // Disable "standout" attributes  // -------------------------------------------------------------------------  // The next two are virtual, because we redefine them in the  // NCursesPanel class.  // -------------------------------------------------------------------------  virtual int    refresh() { return ::wrefresh(w); }  // Propagate the changes in this window to the virtual screen and call  // doupdate(). This is redefined in NCursesPanel.  virtual int    noutrefresh() { return ::wnoutrefresh(w); }  // Propagate the changes in this window to the virtual screen. This is  // redefined in NCursesPanel.  // -------------------------------------------------------------------------  // multiple window control  // -------------------------------------------------------------------------  int            overlay(NCursesWindow& win) {    return ::overlay(w, win.w); }  // Overlay this window over win.  int            overwrite(NCursesWindow& win) {    return ::overwrite(w, win.w); }  // Overwrite win with this window.  int            copywin(NCursesWindow& win,			 int sminrow, int smincol,			 int dminrow, int dmincol,			 int dmaxrow, int dmaxcol, bool overlaywin=TRUE) {    return ::copywin(w, win.w, sminrow, smincol, dminrow, dmincol,		     dmaxrow, dmaxcol, static_cast<int>(overlaywin ? 1 : 0)); }  // Overlay or overwrite the rectangle in win given by dminrow,dmincol,  // dmaxrow,dmaxcol with the rectangle in this window beginning at  // sminrow,smincol.  // -------------------------------------------------------------------------  // Mouse related  // -------------------------------------------------------------------------  bool has_mouse() const;  // Return TRUE if terminal supports a mouse, FALSE otherwise  // -------------------------------------------------------------------------  // traversal support  // -------------------------------------------------------------------------  NCursesWindow*  child() { return subwins; }  // Get the first child window.  NCursesWindow*  sibling() { return sib; }  // Get the next child of my parent.  NCursesWindow*  parent() { return par; }  // Get my parent.  bool isDescendant(NCursesWindow& win);  // Return TRUE if win is a descendant of this.};// -------------------------------------------------------------------------// We leave this here for compatibility reasons.// -------------------------------------------------------------------------class NCURSES_IMPEXP NCursesColorWindow : public NCursesWindow{public:  NCursesColorWindow(WINDOW* &window)   // useful only for stdscr    : NCursesWindow(window) {      useColors(); }  NCursesColorWindow(int nlines,        // number of lines		     int ncols,         // number of columns		     int begin_y,       // line origin		     int begin_x)       // col origin    : NCursesWindow(nlines, ncols, begin_y, begin_x) {      useColors(); }  NCursesColorWindow(NCursesWindow& parentWin,// parent window		     int nlines,        // number of lines		     int ncols,         // number of columns		     int begin_y,       // absolute or relative		     int begin_x,       //   origins:		     char absrel = 'a') // if `a', by & bx are    : NCursesWindow(parentWin,		    nlines, ncols,	// absolute screen pos,		    begin_y, begin_x,   // else if `r', they are		    absrel ) {          // relative to par origin      useColors(); }};// These enum definitions really belong inside the NCursesPad class, but only// recent compilers support that feature.  typedef enum {    REQ_PAD_REFRESH = KEY_MAX + 1,    REQ_PAD_UP,    REQ_PAD_DOWN,    REQ_PAD_LEFT,    REQ_PAD_RIGHT,    REQ_PAD_EXIT  } Pad_Request;  const Pad_Request PAD_LOW  = REQ_PAD_REFRESH;   // lowest  op-code  const Pad_Request PAD_HIGH = REQ_PAD_EXIT;      // highest op-code// -------------------------------------------------------------------------// Pad Support. We allow an association of a pad with a "real" window// through which the pad may be viewed.// -------------------------------------------------------------------------class NCURSES_IMPEXP NCursesPad : public NCursesWindow{private:  NCursesWindow* viewWin;       // the "viewport" window  NCursesWindow* viewSub;       // the "viewport" subwindow  int h_gridsize, v_gridsize;protected:  int min_row, min_col;         // top left row/col of the pads display area  NCursesWindow* Win(void) const {    // Get the window into which the pad should be copied (if any)    return (viewSub?viewSub:(viewWin?viewWin:0));  }  NCursesWindow* getWindow(void) const {    return viewWin;  }  NCursesWindow* getSubWindow(void) const {    return viewSub;  }  virtual int driver (int key);      // Virtualize keystroke key  // The driver translates the keystroke c into an Pad_Request  virtual void OnUnknownOperation(int pad_req) {    ::beep();  }  // This is called if the driver returns an unknown op-code  virtual void OnNavigationError(int pad_req) {    ::beep();  }  // This is called if a navigation request couldn't be satisfied  virtual void OnOperation(int pad_req) {  };  // OnOperation is called if a Pad_Operation was executed and just before  // the refresh() operation is done.public:  NCursesPad(int nlines, int ncols);  // create a pad with the given size  NCursesPad& operator=(const NCursesPad& rhs)  {    if (this != &rhs) {      *this = rhs;      NCursesWindow::operator=(rhs);    }    return *this;  }  NCursesPad(const NCursesPad& rhs)    : NCursesWindow(rhs),      viewWin(rhs.viewWin),      viewSub(rhs.viewSub),      h_gridsize(rhs.h_gridsize),      v_gridsize(rhs.v_gridsize),      min_row(rhs.min_row),      min_col(rhs.min_col)  {  }  virtual ~NCursesPad() {}  int echochar(const chtype ch) { return ::pechochar(w, ch); }  // Put the attributed character onto the pad and immediately do a  // prefresh().  int refresh();  // If a viewport is defined the pad is displayed in this window, otherwise  // this is a noop.  int refresh(int pminrow, int pmincol,	      int sminrow, int smincol,	      int smaxrow, int smaxcol) {    return ::prefresh(w, pminrow, pmincol,		      sminrow, smincol, smaxrow, smaxcol);  }  // The coordinates sminrow,smincol,smaxrow,smaxcol describe a rectangle  // on the screen. <b>refresh</b> copies a rectangle of this size beginning  // with top left corner pminrow,pmincol onto the screen and calls doupdate().  int noutrefresh();  // If a viewport is defined the pad is displayed in this window, otherwise  // this is a noop.  int noutrefresh(int pminrow, int pmincol,		  int sminrow, int smincol,		  int smaxrow, int smaxcol) {    return ::pnoutrefresh(w, pminrow, pmincol,			  sminrow, smincol, smaxrow, smaxcol);  }  // Does the same as refresh() but without calling doupdate().  virtual void setWindow(NCursesWindow& view, int v_grid = 1, int h_grid = 1);  // Add the window "view" as viewing window to the pad.  virtual void setSubWindow(NCursesWindow& sub);  // Use the subwindow "sub" of the viewport window for the actual viewing.  // The full viewport window is usually used to provide some decorations  // like frames, titles etc.  virtual void operator() (void);  // Perform Pad's operation};// A FramedPad is constructed always with a viewport window. This viewport// will be framed (by a box() command) and the interior of the box is the// viewport subwindow. On the frame we display scrollbar sliders.class NCURSES_IMPEXP NCursesFramedPad : public NCursesPad{protected:  virtual void OnOperation(int pad_req);public:  NCursesFramedPad(NCursesWindow& win, int nlines, int ncols,		   int v_grid = 1, int h_grid = 1)    : NCursesPad(nlines, ncols) {    NCursesPad::setWindow(win, v_grid, h_grid);    NCursesPad::setSubWindow(*(new NCursesWindow(win)));  }  // Construct the FramedPad with the given Window win as viewport.  virtual ~NCursesFramedPad() {    delete getSubWindow();  }  void setWindow(NCursesWindow& view, int v_grid = 1, int h_grid = 1) {    err_handler("Operation not allowed");  }  // Disable this call; the viewport is already defined  void setSubWindow(NCursesWindow& sub) {    err_handler("Operation not allowed");  }  // Disable this call; the viewport subwindow is already defined};#endif /* NCURSES_CURSESW_H_incl */

⌨️ 快捷键说明

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