Borland c++控制台功能
Borland c++ console functions
我现在正在学习,我有这些作业要做:
1)如果按下CTRL + L
键,所有数字符号的颜色都会改变。
2)如果你按下CTRL + S
键,你将得到单词的长度,从光标左边。
我找到了这个函数int bioskey(int cmd);
现在我可以检查键是否按下了,但是如何更改数字符号的颜色,或者从控制台读取单词以获得它们的长度呢?
我们中的一些人仍然记得MS-DOS(让它安息或碎片…)
如果你真的在MS-DOS中,那么你不能指望控制台的内容只会在特定区域改变颜色。你需要自己去做。问题是我们对你的项目背景一无所知,所以我们不知道你的东西是如何表示的,渲染/输出/输入等…
我假设使用EGA/VGA BIOS文本模式,因此您可以利用直接访问VRAM。因此,您需要将指针设置为地址B800:0000
并将其处理为数组,其中屏幕上的每个字符都有2个字节。一个是颜色属性,另一个是ASCII代码(不确定在哪个顺序了)…
对于已经渲染的东西你只需:
-
全屏循环
通常为
80x25x2
Bytes -
测试每个ASCII的alpha数值
所以ASCII
code >= '0'
和code<='9'
的数字或添加所有的东西,你正在考虑作为字母数字,如code>' '
和code<='9'
。 -
更改所选字符的颜色
只是通过改变属性byte。
当你把数字组合在一起时,它看起来像这样:
char far *scr=(char far*)0x0B0000000;
int x,y,a;
for (a=0,y=0;y<25;y++)
for (x=0;x<80;x++,a+=2)
if ((scr[a+0]>='0')&&((scr[a+0]<='9'))
{
scr[a+1]=7; //attribute with the different color here
}
如果不工作,请尝试交换scr[a+0]
和scr[a+1]
。如果发生异常,则您不在MS-DOS中,并且您无法访问VRAM。在这种情况下,使用DOS-BOX或允许访问内存的驱动程序,如dllportio…有关更多信息,请参阅一些或多或少相关的QA:
- 在C 中显示颜色数组
- 在屏幕上移动对象的最佳方式是什么?
如果您遇到CTRL+Key
检测问题,不确定 tc++ 中的内置功能是否允许CTRL
(太久以前),那么您可以利用BIOS甚至连接键盘ISR。请参阅第二个链接,其中ISR用于键盘处理程序。你可以把它移植到 c++ 或者google上,肯定有很多这样的例子,尤其是TP7.0(这是pascal,但很容易移植到 tc++ )
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 多态性和功能结合
- C++:将控制台输出存储在宏中更好吗
- 带内存和隔离功能的SQLite
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 类模板的成员功能的定义在单独的TU中完全专业化
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 控制台打印时间功能产生1
- winapi 中的哪个功能检查按钮是否正在关闭控制台?
- 如何在控制台应用程序中添加滚动功能以显示更大的输入
- 如果我使用此功能,我的控制台崩溃
- 功能调用不起作用,但控制台仍允许输入
- 我们可以互换控制台和 Win32 C++ 的命令和功能吗?
- 使用JAR文件n Visual C 控制台应用程序的功能
- C 从控制台运行功能
- 控制台RPG游戏 - 攻击和健康功能-C
- Borland c++控制台功能
- c++ GTK控制台日志功能错误
- 关闭控制台时C++/Qt运行功能
- 控制台应用程序- c++等效功能与ScreenRes在FreeBasic