84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
我在实现一个类似cmd的程序,程序内置一些命令,通过tab键自动补全命令.但是控制台没有自己的窗口过程函数,无法处理按键消息,setwindowshook也对控制台程序无效.虽然普通的getchar可以判断是否是tab,但是命令是以行为单位的,还有backspace退格等问题,所以请教大家有没有好的方法
学习是最好的投资!
GNU Readline Library - Programming with GNU Readline
以前想过这个问题:用getchar可以。ch=getchar(),每次输入就判断下ch的值。如果backspace转义字符'\b',直接输出就可以覆盖了。如果是TAB键的补全T,实现将你要补全的存在数组里,然后去匹配。具体形式有1、在当前光标的下一行输出一个可匹配的字符,设定要匹配就输入Enter键之类的,否则就不管他,这里需要获取并保存当前光标位置,然后跳到下一行,显示完提示字符串后也要删除。blabla。。2、按TAB键直接输出匹配的串,要保存原来的点,如果用户按'esc'就返回原来的字符串,记录匹配数目,输出'\b'就可以。如果继续按TAB则输出当前,输出匹配的下一个。
有几个函数提供参考:getch() // conio.h输入的字符不会显示在屏幕上,类似linux输入密码的。ssprintf()修改字符获取控制台光标位置等等。。。。
我以前收藏的文章,"如何先cmd输入密码显示*号 "http://www.cnblogs.com/jiangkun86/archive/2011/09/19/2181910.html
GNU Readline Library - Programming with GNU Readline
以前想过这个问题:
用getchar可以。ch=getchar(),每次输入就判断下ch的值。
如果backspace转义字符'\b',直接输出就可以覆盖了。
如果是TAB键的补全T,实现将你要补全的存在数组里,然后去匹配。具体形式有
1、在当前光标的下一行输出一个可匹配的字符,设定要匹配就输入Enter键之类的,否则就不管他,这里需要获取并保存当前光标位置,然后跳到下一行,显示完提示字符串后也要删除。blabla。。
2、按TAB键直接输出匹配的串,要保存原来的点,如果用户按'esc'就返回原来的字符串,记录匹配数目,输出'\b'就可以。如果继续按TAB则输出当前,输出匹配的下一个。
有几个函数提供参考:
getch() // conio.h
输入的字符不会显示在屏幕上,类似linux输入密码的。
ssprintf()
修改字符
获取控制台光标位置等等。。。。
我以前收藏的文章,"如何先cmd输入密码显示*号 "
http://www.cnblogs.com/jiangkun86/archive/2011/09/19/2181910.html