Linux下c语言的图像编程—curses.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux下c语言的图像编程—curses

相信您在网路上一定用过如 tin,elm 等工具, 这些软体有项共同的特色,即他们能利用上下左右等方向键来控制游标的位置。 除此之外, 这些程式的画面也较为美观。 对 Programming 有兴趣的朋友一定对此感到好奇, 也许他能在 PC 上用 Turbo C 轻易地写出类似的程式, 然而, 但当他将相同的程式一字不变地移到工作站上来编译时, 却出现一堆抓也抓不完的错误。其实, 原因很简单, 他使用的函式库可能在 UNIX 上是没有定义的。 有些在 Turbo-C 上被广泛使用的一些函式, 可能在 UNIX 上是不被定义的。 ??? 为了因应网路上各式各样的终端机形态 (terminal), UNIX 上特别发展出一套函式库, 专门用来处理 UNIX 上游标移动及萤幕的显示。这就是本篇文章要为您介绍的 - curses.h 函式库。 利用这个函式库, 您也可以写出像 elm 般利用方向键来移动光棒位置的程式。(CCCA 近来所提供的线上选课程式, 及程式服务界面, 即是笔者利用 curses 发展而成的 )。 ■ curses 的历史与版本 ??? cureses 最早是由柏克莱大学的 Bill Joy 及 Ken Arnold 所发展出来的。当时发展此一函式库主要原因是为了提高程式对不同终端机的相容性而设计的。 因此,利用 curses 发展出来的程式将和您所使用的终端机无关。也就是说, 您不必担心您的程式因为换了一部终端机而无法使用。这对程式设计师而言, 尤其是网路上程式的撰写, 是件相当重要的一件事。curses之所以能对上百种以上的终端机工作, 是因为它将所有终端机的资料, 存放在一个叫 termcap 的资料库, ( 而在第二版的 System V 系统中, 新版的 curses 以 terminfo 取代原来的 termcap)。 有了这些记录, 程式就能够知道遇到哪一种终端机时, 须送什麽字元才能移动游标的位置, 送什麽字元才能清除整个萤幕清除。(* 注一)。 ??? 另外, 本文的介绍 以 System V 的 curses 版本为主。 ■ 如何在您的程式使用 curses ? ??? 在您的 C 程式的档头将 curses.h include 进来。当您引进 curses.h 这个函式库後, 系统会自动将 stdio.h 和 unctl.h一并 include 进来。另外, 在 System V 版本中, terminfo.h 这个函式库也将一并include进来。 ????? #include curses.h ????? main() ????? { ??????? : : ??????? : : ????? } ??? 当然, 您的系统内必须放有 curses.h 这个函式库。 ■ 如何编译(compile) ??? 当您编辑好您的程式, 在 UNIX 提示符号下键入: ????? % /usr/5bin/cc [file.c] -lcurses 引进 curses.h 这个 library。或 ????? % /usr/5bin/cc [file.c] -lcurses -ltermlib (*注二) ■ 如何开始我的第一个 curses 程式? ??? 在开始使用 curses 的一切命令之前, 您必须先利用 initscr()这个函式来开启 curses 模式。 ??? 相对的, 在结束 curses 模式前 ( 通常在您结束程式前 ) 也必须以endwin()来关闭 curses 模式。 ????? #include curses.h ????? main() ????? { ??????? initscr(); ??????? : : ??????? : : ??????? : : ??????? endwin(); ????? } ??? 这是一般 curses 程式标准的模式。 ??? 此外, 您可以就您程式所须, 而做不同的设定。 当然, 您可以不做设定,而只是呼叫 initscr()。 ??? 您可以自己写一个函式来存放所有您所须要的设定。平常使用时, 只要呼叫这个函式即可启动 curses 并完成一切设定。 ??? 下面的例子, 即是笔者将平常较常用的一些设定放在一个叫 initial()的函式内。 ????? void initial() ????? { ??????? initscr(); ??????? cbreak(); ??????? nonl(); ??????? noecho(); ??????? intrflush(stdscr,FALSE); ??????? keypad(stdscr,TRUE); ??????? refresh(); ????

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档