- 主题:console文本程序,一行字符左移,如何搞
两个指针搬家不行吗?
【 在 alewa 的大作中提到: 】
: 我用c/c++在macos上写console文本程序,希望能够把屏幕上某行从第m个字符开始整个左移一个或n个字符。我查了一下 esc control sequence,没找到直接能用的。请问各位,有人知道怎么搞吗?谢谢!
--
FROM 221.221.52.*
有一个屏幕管理包,多年前用过,现在忘了。
terminfo,好像是这个。
termcap,自己man一下。
【 在 alewa 的大作中提到: 】
: 我用c/c++在macos上写console文本程序,希望能够把屏幕上某行从第m个字符开始整个左移一个或n个字符。我查了一下 esc control sequence,没找到直接能用的。请问各位,有人知道怎么搞吗?谢谢!
--
修改:ylh1969 FROM 221.221.52.*
FROM 221.221.52.*
见3楼。那个屏幕管理包,对屏幕内容进行缓冲和刷新,解决全屏幕字符编辑问题。
【 在 flw 的大作中提到: 】
: 一般来说,比较好的做法,是把这行内容记在一个变量里,
: 然后在内存里算好你的新内容,然后把该行擦掉重画。
: 控制序列中没有专门的这个功能,但是有擦除一行内容的功能。
: ...................
--
FROM 221.221.50.*
你说那个也对。curses,ncurses都可以。
我用的是terminfo。
【 在 flw 的大作中提到: 】
: 你弄错了。
:
--
FROM 221.221.50.*
广义讲,是一组屏幕控制程序包。狭义讲,是这个程序包所使用的描述终端特性的数据库。
【 在 flw 的大作中提到: 】
: 你知道 terminfo 是什么吗?
:
--
FROM 221.221.50.*
哦,好多年没用了,都忘了。
你对。curses就是使用terminfo或termcap的。
【 在 flw 的大作中提到: 】
: 你知道 terminfo 是什么吗?
:
--
FROM 221.221.50.*
真忘了。
好像是程序里是
#include <curses.h>
连接是-lcurses -lterminfo
底层是terminfo的终端驱动。执行清屏清行,光标定位,属性设置等动作。
curses负责虚拟屏幕管理。
【 在 flw 的大作中提到: 】
: curses 是 curses,terminfo 是 terminfo,别搞混了。
: 而且现在一般说 curses 其实是指 ncurses。
:
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*
有的,在libterminfo.a里,读terminfo,根据特定的终端特性,把上层的move等指令翻译成终端定位指令,并发送到终端。
【 在 flw 的大作中提到: 】
: 你理解的还是不对。
: terminfo 就只是一个数据库而已,哪有什么驱动。
:
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*
我用过的,好多年了。接触过ncurses。当然是unix和Linux,在mac上没有用过,不知道怎么组织的。
【 在 flw 的大作中提到: 】
: 是你想象的吧。
:
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*
查了一下老程序,你说的对,terminfo不需要单独连接,已经合并到curses里了。
CFLAGS= -O -I$(SDBCDIR)/include
LFLAG= -L$(SDBCDIR)/lib
TOOLOBJ= wco.o wdispn.o wcur.o wcbox.o acce.o wdisp.o
tcur:tcur.o $(TOOLOBJ)
cc -o tcur tcur.o $(TOOLOBJ) $(LDLAG) -lpanel -lcurses -lstr
tpad:tpad.o
cc -o tpad tpad.o -lpanel -lcurses
$(TOOLOBJ): pcio.h
# 屏幕浏览程序
btab:btab.o $(TOOLOBJ)
cc -o btab btab.o $(TOOLOBJ) $(LFLAG) -lstr -lncurses
# 通用制表程序
ctab:ctab.o setattr.o
cc -o ctab ctab.o setattr.o $(LFLAG) -lstr
【 在 flw 的大作中提到: 】
: 是你想象的吧。
:
--
FROM 221.221.50.*