#include <ncurses.h>
#include <string.h>
#include <iostream>
#include <stdlib.h>
using namespace std; void* head_refresh(void *arg);
void* input_refresh(void *arg);
void* output_refresh(void *arg);
void* right_refresh(void *arg);
class window
{
friend void* head_refresh(void *arg);
friend void* input_refresh(void *arg);
friend void* output_refresh(void *arg);
friend void* right_refresh(void *arg);
public:
window()
{
initscr(); getmaxyx(stdscr,y,x);
}
void create_head()
{
head_window = newwin(4,x,0,0);
box(head_window,'.','.');
mvwprintw(head_window,4/2,x/3,"|Welcome to here|");
}
void _refresh(WINDOW *win)
{
wrefresh(win);
wgetch(win);
}
void create_input()
{
input_window = newwin(y-5,x/2,5,0);
box(input_window,'.','.');
mvwprintw(input_window,1,0,"input:");
}
void create_output()
{
output_window = newwin((y-5)/2,x/2,5+(y-5)/2+1,x/2);
box(output_window,'.','.');
mvwprintw(output_window,1,0,"output:");
} void create_right()
{
right_window = newwin((y-5)/2,x/2,5,x/2);
box(right_window,'.','.');
mvwprintw(right_window,1,0,"friend:");
} ~window()
{
endwin();
} private:
WINDOW *head_window;
WINDOW *input_window;
WINDOW *output_window;
WINDOW *right_window;
int x;
int y;
}; void* head_refresh(void *arg)
{
window *win = (window*)arg; win->_refresh(win->head_window); return NULL;
} void* input_refresh(void *arg)
{
window *win = (window*)arg;
win->_refresh(win->input_window);
return NULL;
} void* output_refresh(void *arg)
{
window *win = (window*)arg;
win->_refresh(win->output_window);
return NULL;
}
void* right_refresh(void *arg)
{
window *win = (window*)arg;
win->_refresh(win->right_window);
return NULL;
} int main()
{
window win;
win.create_head();
win.create_input();
win.create_output();
win.create_right();
pthread_t head_id,input_id,output_id,right_id; pthread_create(&head_id,NULL,head_refresh,(void *)&win);
pthread_create(&input_id,NULL,input_refresh,(void *)&win);
pthread_create(&output_id,NULL,output_refresh,(void *)&win);
pthread_create(&right_id,NULL,right_refresh,(void *)&win);
//由于终端无法同步刷新。所以使用多个线程来进行刷新,能够满足
//同一时候显示多个窗体的需求。
pthread_join(head_id,NULL);
pthread_join(input_id,NULL);
pthread_join(output_id,NULL);
pthread_join(right_id,NULL); getch();
return 0;
}

最新文章

  1. 谈谈一些有趣的CSS题目(六)-- 全兼容的多列均匀布局问题
  2. 内存VSS/RSS/PSS/USS名词解释
  3. Guava学习笔记(2):Preconditions优雅的检验参数
  4. setTimeout调用带参数的函数的方法
  5. 获取MS SQL TABLE列名列表
  6. C# Graphic 绘制圆、三角形、椭圆、图片
  7. java类型转化之Hbase ImmutableBytesWritable类型转String
  8. Ubuntu14.04下Python3.4启动IDLE
  9. UML应用:业务内涵的分析抽象&amp;amp;表达
  10. S2_SQL_第三章
  11. NOIP 2018 大翻车记
  12. ansible copy 模块详解
  13. SAP 打印自动导出PDF本地文件(自己做的例子)
  14. STM32 f407 温湿度采集报警
  15. POJ2270&amp;&amp;Hdu1808 Halloween treats 2017-06-29 14:29 40人阅读 评论(0) 收藏
  16. 数组filter()参数详解,巧用filter()数组去重
  17. Linux命令之du
  18. OpenCV学习(35) OpenCV中的PCA算法
  19. cmder小技巧
  20. Vue2.0项目实战语法

热门文章

  1. js动态生成下拉列表
  2. 02 Java 基础语法
  3. yum升级kernel
  4. Vitamio介绍及使用
  5. 关于Bootstrap 利用radio实现tab切换的一个问题
  6. git 之gitignore 添加项之后生效的问题
  7. (转)HTML5 本地数据库(SQLite) 示例
  8. tcpreplay 缓存算法研究
  9. (1) python--numpy
  10. VBA 学习