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

📄 wtcjbs.c

📁 LINUX下自己开发的字符界面程序
💻 C
字号:
#include <curses.h>
#include <stdio.h>
#define StartX 3 
#define StartY 3 

int nowwin;
WINDOW *win[4],*curwin;
void initial();
void viewwindow(int nowwin);
void dowindow(int nowwin);

main()
{
  int x=StartX;
  int y=StartY;
  int i,ch;

/***  init stdscr window  ***/ 
  initial();
  curs_set(0);

/*  box(stdscr,'|','-'); */
  wborder(stdscr,'|','|','-','-',ACS_ULCORNER,ACS_URCORNER,ACS_LLCORNER,ACS_LRCORNER);
  attron(A_REVERSE);
  mvaddstr(0,COLS/2-20," ENTRUST AND REAL_DONE COUNT per day");
  attroff(A_REVERSE);
  move(1,COLS-30);
  printw("MAX LINES:%d   MAX COLS:%d",LINES,COLS);

  mvaddstr(4,5,"This prog is used to list quantities for entrust and real_done per day");
  mvaddstr(6,5,"1 - The first quarter");
  mvaddstr(7,5,"2 - The second quarter");
  mvaddstr(8,5,"3 - The third quarter");
  mvaddstr(9,5,"4 - The fourth quarter");
  mvaddstr(10,5,"0 - Return to Main window");
  refresh();

/***  create four window  ***/
  win[0]=newwin(LINES-4,COLS-4,2,2);
  box(win[0],ACS_VLINE,ACS_HLINE);
  win[1]=newwin(LINES-4,COLS-4,2,2);
  box(win[1],ACS_VLINE,ACS_HLINE);
  win[2]=newwin(LINES-4,COLS-4,2,2);
  box(win[2],ACS_VLINE,ACS_HLINE);
  win[3]=newwin(LINES-4,COLS-4,2,2);
  box(win[3],ACS_VLINE,ACS_HLINE);


/***  difine main body for circle  ***/  
  while((ch=getch())!=27) 
    {
    switch(ch)
      {
      case 48:
         curwin=stdscr;
         getyx(curwin,y,x);
         touchwin(stdscr);
         refresh();
         break;
      case 49:
         nowwin=0;
         viewwindow(nowwin);
         dowindow(nowwin);
         break;
      case 50:
         nowwin=1;
         viewwindow(nowwin);
         dowindow(nowwin);
         break;
      case 51:
         nowwin=2;
         viewwindow(nowwin);
         dowindow(nowwin);
         break;
      case 52:
         nowwin=3;
         viewwindow(nowwin);
         dowindow(nowwin);
         break;
      case KEY_UP: 
         --y;
         break;
      case KEY_DOWN:
         ++y;
         break;
      case KEY_RIGHT:
         ++x;
         break;
      case KEY_LEFT:
         --x;
         break;
      case '\r':
         ++y;
         x=0;
         break;
      default:
         break;
      }
    wmove(curwin,y,x); 
    wrefresh(curwin);
    refresh();
    }

  refresh();
  delwin(win[0]);
  delwin(win[1]);
  delwin(win[2]);
  delwin(win[3]);
  endwin();
}

void viewwindow(int i)
{
  int x,y;
  nowwin=i;
  curwin=win[nowwin];
  touchwin(curwin);
  getyx(curwin,y,x);
  mvwprintw(curwin,0,5,"window %d",i+1);  
  mvwprintw(curwin,1,COLS/2-15,"quarter %d: %d -- %d month",i+1,i*3+1,i*3+3);
  wrefresh(curwin);
}

void dowindow(int i)
{
  curwin=win[i];
  for(i=StartY;i<=COLS-10;i++)
    {
    mvwaddch(curwin,LINES/2-2,i,ACS_HLINE);   
    }
  mvwaddch(curwin,LINES/2-2,i,ACS_RARROW);
  mvwaddstr(curwin,LINES/2-1,COLS-15,"x date");

  mvwprintw(curwin,StartY-1,StartY+2,"  y weituo"); 
  mvwaddch(curwin,StartY-1,StartY+2,ACS_UARROW);
  for(i=StartY;i<=LINES-8;i++)
    {
    mvwaddch(curwin,i,StartY+2,ACS_VLINE);   
    }
} 

/***  init stdscr  ***/
void initial()
{
  initscr();
  cbreak();
  nonl();
  noecho();
  intrflush(stdscr,FALSE);
  keypad(stdscr,TRUE);
  refresh();
}

⌨️ 快捷键说明

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