84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
我在实现一个类似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