Borland c++控制台功能

Borland c++ console functions

本文关键字:功能 控制台 c++ Borland      更新时间:2023-10-16

我现在正在学习,我有这些作业要做:

1)如果按下CTRL + L键,所有数字符号的颜色都会改变。

2)如果你按下CTRL + S键,你将得到单词的长度,从光标左边。

我找到了这个函数int bioskey(int cmd);现在我可以检查键是否按下了,但是如何更改数字符号的颜色,或者从控制台读取单词以获得它们的长度呢?

我们中的一些人仍然记得MS-DOS(让它安息或碎片…)

如果你真的在MS-DOS中,那么你不能指望控制台的内容只会在特定区域改变颜色。你需要自己去做。问题是我们对你的项目背景一无所知,所以我们不知道你的东西是如何表示的,渲染/输出/输入等…

我假设使用EGA/VGA BIOS文本模式,因此您可以利用直接访问VRAM。因此,您需要将指针设置为地址B800:0000并将其处理为数组,其中屏幕上的每个字符都有2个字节。一个是颜色属性,另一个是ASCII代码(不确定在哪个顺序了)…

对于已经渲染的东西你只需:

  1. 全屏循环

    通常为80x25x2 Bytes

  2. 测试每个ASCII的alpha数值

    所以ASCII code >= '0'code<='9'的数字或添加所有的东西,你正在考虑作为字母数字,如code>' 'code<='9'

  3. 更改所选字符的颜色

    只是通过改变属性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++ )