如何在c中隐藏控制台光标?
How to hide console cursor in c?
我有一个简单的 C 程序,它代表控制台中的加载屏幕,但我无法隐藏光标。我尝试提高睡眠功能的速度,以便重置光标计时器并且光标消失,但这不起作用。
有什么隐藏光标的小窍门吗?
代码:
#include <stdio.h>
#include <stdlib.h>
const int TIME = 1;
int main(int argc,char *argv[]){
int i;
while (1){
printf("loading");
for (i=0;i<3;i++){
sleep(TIME);
printf(".");
}
sleep(TIME);
printf("\r");
system("Cls");
sleep(TIME);
}
}
将以下函数添加到您的程序中
#include <windows.h>
void hidecursor()
{
HANDLE consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO info;
info.dwSize = 100;
info.bVisible = FALSE;
SetConsoleCursorInfo(consoleHandle, &info);
}
并在您的 main
中调用它。
并在 MSDN
中阅读更多内容
printf("\e[?25l");
这应该有效!它取自 ANSI 代码表,其中字符不仅仅是它们所看到的。它们的行为就像某种形式的命令。
扩展 Bishal 的回答:
隐藏光标:
printf("\e[?25l");
要重新启用游标:
printf("\e[?25h");
这里有一个在 Windows 和 Linux 中都有效的解决方案:
#include <iostream>
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#define VC_EXTRALEAN
#include <Windows.h>
#endif // _WIN32
using namespace std;
void show_console_cursor(const bool show) {
#if defined(_WIN32)
static const HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO cci;
GetConsoleCursorInfo(handle, &cci);
cci.bVisible = show; // show/hide cursor
SetConsoleCursorInfo(handle, &cci);
#elif defined(__linux__)
cout << (show ? "3[?25h" : "3[?25l"); // show/hide cursor
#endif // Windows/Linux
}
我有一个简单的 C 程序,它代表控制台中的加载屏幕,但我无法隐藏光标。我尝试提高睡眠功能的速度,以便重置光标计时器并且光标消失,但这不起作用。
有什么隐藏光标的小窍门吗?
代码:
#include <stdio.h>
#include <stdlib.h>
const int TIME = 1;
int main(int argc,char *argv[]){
int i;
while (1){
printf("loading");
for (i=0;i<3;i++){
sleep(TIME);
printf(".");
}
sleep(TIME);
printf("\r");
system("Cls");
sleep(TIME);
}
}
将以下函数添加到您的程序中
#include <windows.h>
void hidecursor()
{
HANDLE consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO info;
info.dwSize = 100;
info.bVisible = FALSE;
SetConsoleCursorInfo(consoleHandle, &info);
}
并在您的 main
中调用它。
并在 MSDN
中阅读更多内容printf("\e[?25l");
这应该有效!它取自 ANSI 代码表,其中字符不仅仅是它们所看到的。它们的行为就像某种形式的命令。
扩展 Bishal 的回答:
隐藏光标:
printf("\e[?25l");
要重新启用游标:
printf("\e[?25h");
这里有一个在 Windows 和 Linux 中都有效的解决方案:
#include <iostream>
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#define VC_EXTRALEAN
#include <Windows.h>
#endif // _WIN32
using namespace std;
void show_console_cursor(const bool show) {
#if defined(_WIN32)
static const HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO cci;
GetConsoleCursorInfo(handle, &cci);
cci.bVisible = show; // show/hide cursor
SetConsoleCursorInfo(handle, &cci);
#elif defined(__linux__)
cout << (show ? "3[?25h" : "3[?25l"); // show/hide cursor
#endif // Windows/Linux
}