我该如何编写命令行界面?

时间:2011-09-07 07:03:17

标签: c user-interface command-line posix

我是一名GUI开发人员。我使用了许多GUI框架,包括WindowsForms,Flash,HTML,AppKit,UIKit。我可以说我知道如何编写GUI。

突然间,我对命令行界面感兴趣。像VI或Emacs。因为我开始使用GUI编程,所以我没有任何关于CLI的经验或知识。当然,我使用了VI和unix shell,但是我不知道如何实现它们。我想知道它。

对于GUI,所有图形内容的大多数基本构造都是最低级别的绘图方法。对于软件实现,它是基于CPU的绘图方法。对于硬件加速实现,它是基于OpenGL的方法。所有GUI内容都建立在它们之上。我对CLI有什么期望?如何在控制台上绘制文本并使插入符闪烁?

我只需要第一步。像函数名称或库名称。例如,像setPixel()这样的功能。任何帮助将不胜感激。

P.S。 我更喜欢通用Unix系统。主要是POSIX。目前我正在使用Mac OS X.当然语言是C。

4 个答案:

答案 0 :(得分:5)

如果您想直接潜水,请学习ncurses并输入。这是编写控制台gfx应用程序的方法。

如果您想学习基础知识,ANSI escape codes。这是ncurses如何与终端进行魔法交互的机制。它本身就很容易管理,也是一个有趣的学习主题 - 你只需要打印一个转义序列,光标移动到屏幕上的特定点,或者打印出的任何内容都以反向视频打印,依此类推。从那里开始,使用256个ASCII代码的上半部分是原始的半光学,依此类推。

答案 1 :(得分:3)

查看http://en.wikipedia.org/wiki/Readline,因为它可以为您提供命令行历史记录,制表符完成等内容......

还为基于控制台的对话框屏幕添加http://en.wikipedia.org/wiki/Ncurses

答案 2 :(得分:2)

你在用哪种语言进行实验?哪个操作系统?正如已经说过的那样,ncurses对于像unix这样的系统来说是一个很好的库,但是如果你在ms窗口下,我想事情会有所不同。

要记住的另一件事是,根据您的操作系统,您可能需要学习&了解termcap条目或继承的DOS遗产。

对于* nix,如果要试验像素和类似物,则必须检查一些图形库。如果它只是你需要的普通终端接口,ncurses是起点(直到你想用termcap和escapes完成所有操作)。

有很多框架可用于开发基于文本/终端的UI,或多或少地提供您需要的一切。但是如果你想跟踪一条从像素(1,1)到像素(10,24)的线,我认为你应该专注于图形库。 (* nix env中的OpenGL很容易通过MESA库获得。)

在win32上,好吧,DirectX,但它们真的很麻烦。

答案 3 :(得分:1)

C有一个库,可以更好地操纵终端:ncurses