龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

一个简单的编辑器雏形

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
注:本站文章 这里用到了屏幕开发库 curses 和键盘函数 keypad. 下面来看源程序: #include #define STARTX 1 #define STARTY 1 void initial() { initscr(); /* 初始化 */ cbreak(); /* 用来开启 cbreak 模式,cbreak 指除

  注:本站文章

  

  

这里用到了屏幕开发库 curses 和键盘函数 keypad.

  

  

下面来看源程序:

  

  

#include

  

  

#define STARTX 1

  

#define STARTY 1

  

  

void initial()

  

{

  

initscr(); /* 初始化 */

  

cbreak(); /* 用来开启 cbreak 模式,cbreak 指除了DELETE,CTRL终端处理的非凡字符外,其余键盘输入的字符将立即被读取 */

  

nonl(); /* 格式控制 */

  

noecho();/* 并不立即显示字符 */

  

intrflush(stdscr,FALSE); /* 不读取串 */

  

keypad(stdscr,TRUE); /* 键盘响应 */

  

refresh(); /* 更新屏幕 */

  

}

  

  

int main()

  

  

{

  

int x=STARTX;

  

int y=STARTY;

  

int ch;

  

  

initial();

  

  

//box(stdscr,ACS_VLINE,ACS_HLINE);

  

/* 设置窗口形式 */

  

move(0,30);

  

/* 移动 0 行 30 列 */

  

printw("edit"); /* curses 的输出格式,类似 printf */

  

refresh();

  

  

move(x,y);

  

  

  

do{

  

ch=getch();

  

switch(ch){

  

case KEY_UP: /* 获取上键 */

  

if(y>1) --y;

  

move(y,x);

  

break;

  

case KEY_DOWN: /* 获取下键 */

  

++y;

  

break;

  

  

case KEY_RIGHT: /* 获取右键 */

  

++x;

  

break;

  

case KEY_LEFT: /* 获取左键 */

  

if(x>1) --x;

  

break;

  

case '

': /* 获取回车键,并产生一个空行 */

  

++y;

  

x=1;

  

move(y,x);

  

insertln();

  

break;

  

case '': /* 获取 Tab 键 */

  

x+=4;

  

break;

  

case KEY_BACKSPACE: /* 获取删除键,删除字符 */

  

if(x>1) --x;

  

move(y,x);

  

addch(' ');

  

break;

  

  

case KEY_DC:

  

delch();

  

break;

  

case 126: /* 设置 ~ 键为退出键 */

  

endwin(); /* 结束 curses 模式 */

  

exit(0);

  

default:

  

insch(ch); /* 输出字符 */

  

x++;

  

break;

  

}

  

move(y,x);

  

}while(1);

  

}

  

}

  

  

编译程序:gcc -I/usr/include/ncurses edit.c -o edit -lncurses

  

程序可移动光标,输入,删除,增加代码就可成为功能强大的编辑器了.

  

精彩图集

赞助商链接