gpt4 book ai didi

c++ - Borland C++ 控制台函数

转载 作者:行者123 更新时间:2023-11-28 05:26:22 29 4
gpt4 key购买 nike

我现在正在学习,我有这个作业/任务要做:

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

2) 如果按 CTRL + S 键,您将获得光标左侧单词的长度。

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

最佳答案

我们中的一些人还记得 MS-DOS(让它安息吧,否则就碎了......)

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

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

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

  1. 遍历整个屏幕

    通常80x25x2字节

  2. 测试每个 ASCII 的字母数字值

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

  3. 更改所选字符的颜色

    只需更改属性字节。

当你把它放在一起作为数字时,它看起来像这样:

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:

如果您对 CTRL+Key 有疑问检测不确定 TC++ 中的内置函数是否允许 CTRL (太久以前了)然后你就可以利用 BIOS 甚至连接键盘 ISR。请参阅第二个链接,其中存在用于键盘处理程序的 ISR ...您可以将其移植到 C++ 或谷歌,那里一定有很多示例,尤其是 TP7.0(它是 Pascal 但很容易移植到 TC++)

关于c++ - Borland C++ 控制台函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40473070/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com