linux curses库下子窗口实现行选择的功能
来源:互联网 发布:python与量化投资 编辑:程序博客网 时间:2024/06/04 23:34
//程序说明:此程序主要通过创建一系列小窗口来实现按上下键实现行选择的功能
#include <curses.h>
#include <stdlib.h>
#include<stdio.h>
#include <unistd.h>
#define ENTER 10
#define ESCAPE 27
const char* space5 = " ";
void initial()
{
initscr();
cbreak();
nonl();
noecho();
intrflush(stdscr,false);
keypad(stdscr,true);//开启 keypad后,可以使用键盘上的一些特殊字元, 如上下左右等方向键,curses 会将这些特殊字元转换成 curses.h 内定义的一些特殊键.
refresh();
}
main()
{
int selected=0;
int count = 9;
int key;
initial();
start_color();
init_pair(1,COLOR_WHITE ,COLOR_BLACK);//设置颜色,字体和背景色
init_pair(2,COLOR_BLUE ,COLOR_WHITE);
init_pair(3,COLOR_RED ,COLOR_WHITE);
init_pair(4,COLOR_GREEN ,COLOR_BLUE);
box(stdscr,'|','-');
mvwaddstr(stdscr,1,1," PID | ACTDIANUM | CAPS | LOAD ");
WINDOW **items;
items=(WINDOW **)malloc(9*sizeof(WINDOW *));
for(int i=0;i<9;i++)
{
char tempstr[256];
items[i] = subwin(stdscr,1,50,i+2,1);//创建子窗口
sprintf(tempstr,"DIA%d %s300 %s1000 %s2 ",i,space5,space5,space5);
waddstr(items[i],tempstr);
//wnoutrefresh(stdscr);
wbkgd(items[i],COLOR_PAIR(1));
wrefresh(items[i]);
}
move(2,1);
refresh();
wbkgd(items[selected],COLOR_PAIR(2));
wrefresh(items[selected]);
while (1)
{
key=getch();
if (key==KEY_DOWN || key==KEY_UP)
{
wbkgd(items[selected],COLOR_PAIR(1));
wrefresh(items[selected]);
if (key==KEY_DOWN)
{
selected=(selected+1) % count;
}
else
{
selected=(selected+count-1) % count;
}
wbkgd(items[selected],COLOR_PAIR(2));
wrefresh(items[selected]);
doupdate();
}
else if (key==ESCAPE)
{
endwin();
exit(1);
}
}
}
- linux curses库下子窗口实现行选择的功能
- Unix/Linux下的Curses库开发指南——第三章curses库窗口
- Linux-curses库的应用
- linux curses 管理多窗口
- curses库实现的弹球游戏
- linux下的c 编程------curses 库
- linux下的图形编程库curses
- linux curses库的keypad模式
- Linux下curses库的基本操作
- Linux curses库
- Linux curses库使用
- Linux curses库使用
- Linux curses库
- Linux curses库使用
- linux curses库安装
- Linux curses库使用
- Linux curses库使用
- linux之curses库
- 2017中国人工智能产品经理大会即将于9月24日在上海召开
- Delphi学习笔记(二)之类型转换
- 二叉树的层序遍历
- Java中动态绑定与Try finally中有return的理解
- iOS 单例设计模式
- linux curses库下子窗口实现行选择的功能
- MVP设计模式浅析、实战
- Xcode 导入voiceConvert /lib/libopencore-amrnb.a(wrapper.o)' does not contain bitcode. You must rebuild
- C++类和对象知识点整理七----虚基类和虚继承
- java与json的互相转换以及json字符串
- C++之线程池的原理及创建
- 分享七天轻松拿到公众号原创+赞赏
- Android 仿微信语音聊天音量大小显示控件
- Ajax的Json操作