免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2615 | 回复: 10
打印 上一主题 下一主题

Sco Unix 下的Curses 问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-02-01 18:55 |只看该作者 |倒序浏览
--------------------------------------------------------------------------------

我在Sco Unix下使用curses 编程,初始化过程为:
initscr ();
cbreak();
nonl ();
noecho ();
intrflush (stdscr,FALSE);
keypad (stdscr,TRUE);
clear();  
refresh ();


但我在newwin 得到的WINDOW 中读键值时,取不到方向建、退格建等功能建的键值,这是因为什么?

论坛徽章:
0
2 [报告]
发表于 2003-02-02 03:47 |只看该作者

Sco Unix 下的Curses 问题

我刚才在sco下面写了一份测试代码可以阿,代码如下:
#include <curses.h>;

void main(){
  int ch,x=0,y=0;
  int bx=25,by=10;
  WINDOW *win;

  initscr();
  cbreak();
  noecho();
  nonl();
  keypad(stdscr);

  win=newwin(4,30,by,bx);
  box(win,'|','-');
  mvwaddstr(win,1,4,"This is a test window";
  mvwaddstr(win,2,3,"ress ESC key to exit...";
  getch();
  touchwin(win);
  wrefresh(win);
  do{
    ch=getch();
    switch(ch){
      case KEY_UP: y--; break;
      case KEY_DOWN: y++; break;
      case KEY_LEFT: x--; break;
      case KEY_RIGHT: x++; break;
      case 27:
        touchwin(stdscr);
        endwin();
        return;
    }
    if(x<=bx) x=bx+1;
    if(x>;=(bx+2) x=bx+28;
    if(y<=by) y=by+1;
    if(y>;=(by+3)) y=by+2;
    move(y,x);
  }
  while(1);
}


用cc tst.c -lcurses 编译测试通过

论坛徽章:
0
3 [报告]
发表于 2003-02-02 13:08 |只看该作者

Sco Unix 下的Curses 问题

我编译的时候有如下警告:
warning : unreachable case lable :259

第259行就是有case KEY_DOWN 的行

论坛徽章:
0
4 [报告]
发表于 2003-02-03 00:34 |只看该作者

Sco Unix 下的Curses 问题

我的程序好象没有错呀!但就是取不到方向键

论坛徽章:
0
5 [报告]
发表于 2003-02-04 13:23 |只看该作者

Sco Unix 下的Curses 问题

是不是没有touchwin,把焦点凝固在stdwin上?

论坛徽章:
0
6 [报告]
发表于 2003-02-04 23:46 |只看该作者

Sco Unix 下的Curses 问题

有可能跟touchiwn有关,
还有编译不报错不能保证你的程序逻辑就对,
仔细看看case的上下文,记不得有没有wgetch函数,身边没有unix,
还无法验证!

论坛徽章:
0
7 [报告]
发表于 2003-02-10 14:04 |只看该作者

Sco Unix 下的Curses 问题

不能使用getch, 应该使用wgetch(win);

论坛徽章:
0
8 [报告]
发表于 2003-02-10 14:57 |只看该作者

Sco Unix 下的Curses 问题

跟getch和wgerch没关系,是      
keypad(stdscr,TRUE);的缘故吧,你试试

论坛徽章:
0
9 [报告]
发表于 2003-02-11 13:28 |只看该作者

Sco Unix 下的Curses 问题

好像是你的循环语句有问题,在有急事方向健是否定义了。

论坛徽章:
0
10 [报告]
发表于 2003-02-11 13:36 |只看该作者

Sco Unix 下的Curses 问题

initscr();
cbreak();
noecho();
nonl();
keypad(stdscr);

上面是你的程序,keypad函数少一个参数。
应该:keypad(stdscr,TRUE);
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP