设为首页 加入收藏

TOP

C指针原理(59)-Ncurses-文本终端的图形
2014-11-23 20:15:39 来源: 作者: 【 】 浏览:5
Tags:指针 原理 -Ncurses- 文本 终端 图形

键盘管理

我们打造一个简单的单屏编辑器

麦好的AI乐园博客所有内容是原创,如果转载请注明来源

http://blog.csdn.net/myhaspl/


首先构造一个仅带输入功能的编辑器,使用wgetch来捕捉输入。

#include

#include

#include

int main(int argc, char *argv[])

{

setlocale(LC_ALL,"");

initscr();

clear();

noecho();

cbreak();

if(has_colors() == FALSE)

{

endwin();

printf("你的终端不支持色彩!\n");

return (1);

}

start_color(); /*启动color 机制*/

init_pair(1, COLOR_GREEN, COLOR_BLACK);

WINDOW *win1;

int width=COLS-14;

int height=LINES-14;

int x,y;

win1=newwin(height,width,7,7);//新窗口(行,列,begin_y,begin_x)

keypad(win1,TRUE);

box(win1,ACS_VLINE,ACS_HLINE);

wattron(win1,COLOR_PAIR(1));

wrefresh(win1);

getyx(win1,y,x);

++y;++x;

while(1){

int c=mvwgetch(win1,y,x);

++x;

if (x>=width-1){

++y;

x=1;

}

if (y>=height-1){

y=1;

}

mvwprintw(win1,y,x,"%c",c);

wrefresh(win1);

}

wattroff(win1,COLOR_PAIR(1));

endwin();

return 0;

}

运行

dp@dp:~/cursestest % gcc -lncursesw a.c -o mytest

dp@dp:~/cursestest % ./mytest

麦好的AI乐园博客所有内容是原创,如果转载请注明来源

http://blog.csdn.net/myhaspl/



vc/yvPy1xNans9ajrNLGtq+3vc/yvPyjrL/J0sa2r7niseqjrLKiseC8rbniseq0prXExNrI3aGjPC9wPgo8cD4jaW5jbHVkZSA8bG9jYWxlLmg+PC9wPgo8cD4jaW5jbHVkZSA8c3RkaW8uaD48L3A+CjxwPiNpbmNsdWRlIDxuY3Vyc2VzLmg+PC9wPgo8cD5pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKTwvcD4KPHA+ezwvcD4KPHA+c2V0bG9jYWxlKExDX0FMTCw="");

initscr();

clear();

noecho();

cbreak();

if(has_colors() == FALSE)

{

endwin();

printf("你的终端不支持色彩!\n");

return (1);

}

start_color(); /*启动color 机制*/

mvprintw(5,COLS/2-10,"简单编辑器-仅限于单个屏幕的编辑");

refresh();

init_pair(1, COLOR_GREEN, COLOR_BLACK);

WINDOW *win1;

int width=COLS-14;

int height=LINES-14;

int x,y;

win1=newwin(height,width,7,7);//新窗口(行,列,begin_y,begin_x)

keypad(win1,TRUE);

box(win1,ACS_VLINE,ACS_HLINE);

wattron(win1,COLOR_PAIR(1));

wrefresh(win1);

getyx(win1,y,x);

++y;++x;

while(1){

int c=mvwgetch(win1,y,x);

switch(c)

{

case KEY_RIGHT:

++x;

if (x>=width-1) {

++y;

x=1;

}

break;

case KEY_LEFT:

--x;

if (x<1){

--y;

x=width-2;

}

break;

case KEY_UP:

--y;

if (y<1){

y=height-2;

}

break;

case KEY_DOWN:

++y;

if (y>=height-1){

y=1;

}

break;

default:

mvwprintw(win1,y,x,"%c",c);

++x;

if (x>=width-1){

++y;

x=1;

}

if (y>=height-1){

y=1;

}

wrefresh(win1);

}

}

wattroff(win1,COLOR_PAIR(1));

endwin();

return 0;

}

dp@dp:~/cursestest % gcc -lncursesw a.c -o mytest

dp@dp:~/cursestest % ./mytest




】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言面向对象编程(三):虚函数.. 下一篇C语言面向对象编程(五):单链表..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: