用C语言的graphics库做一个在图形窗口的输入程序。当用户按键时,在图形窗口出现按下的键所代表的字符,并像图形界面的输入框一样自动向右递进,按下回车键结束输入,将用户输入的内容在终端窗口显示出来。并在此基础上,实现当前位置光标闪烁,并支持左右方向键和两个删除键。给出代码
时间: 2024-05-10 10:19:05 浏览: 84
画线程序举例-c语言处理图形
以下是一个简单的实现,使用了graphics.h库和conio.h库。
```c
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
int main() {
int gd = DETECT, gm;
initgraph(&gd, &gm, "");
cleardevice();
int x = 100, y = 100;
char str[100] = "";
int len = 0;
int cursor = 0;
while (1) {
if (kbhit()) {
char c = getch();
if (c == '\r') {
break;
} else if (c == '\b') {
if (cursor > 0) {
cursor--;
len--;
str[cursor] = '\0';
}
} else if (c == 224) {
c = getch();
if (c == 75 && cursor > 0) { // left arrow
cursor--;
} else if (c == 77 && cursor < len) { // right arrow
cursor++;
} else if (c == 83 && cursor < len) { // delete
for (int i = cursor; i < len; i++) {
str[i] = str[i+1];
}
len--;
str[len] = '\0';
}
} else if (len < 99) {
for (int i = len; i >= cursor; i--) {
str[i+1] = str[i];
}
str[cursor] = c;
cursor++;
len++;
str[len] = '\0';
}
}
settextstyle(DEFAULT_FONT, HORIZ_DIR, 2);
outtextxy(x, y, str);
if (cursor < len) {
int w = textwidth(str);
setcolor(getbkcolor());
line(x+w, y, x+w, y+textheight("A"));
} else {
int w = textwidth("_");
setcolor(gettextcolor());
line(x+textwidth(str), y, x+textwidth(str), y+textheight("A"));
outtextxy(x+textwidth(str), y, "_");
}
delay(100);
cleardevice();
}
closegraph();
printf("%s\n", str);
return 0;
}
```
这个程序使用了initgraph函数初始化图形窗口,然后使用outtextxy函数在指定位置输出文本。当用户按下键盘时,根据按键进行相应操作,比如添加字符、删除字符、移动光标等。为了支持光标闪烁,我们在光标所在位置输出一个下划线,并定时刷新窗口实现闪烁效果。最后,将用户输入的内容输出到终端窗口。
阅读全文