如何在c中隐藏控制台光标?

时间:2015-05-08 14:38:46

标签: c cursor windows-console

我有一个简单的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);
    }
}

4 个答案:

答案 0 :(得分:4)

将以下功能添加到您的程序

#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

中阅读更多内容

答案 1 :(得分:4)

扩展比沙尔的答案:

要隐藏光标: printf("\e[?25l");

要重新启用光标: printf("\e[?25h");

Source

答案 2 :(得分:0)

    Drive driveService = new Drive.Builder(new NetHttpTransport(), JacksonFactory.getDefaultInstance(), credential)
                    .setApplicationName(APPLICATION_NAME)
                    .build();
            String pageToken = null;
            do {
                FileList files = driveService.files().list()
                        .setFields("nextPageToken, files(id, name, parents)")
                        .setSpaces("drive")
                        .setPageToken(pageToken)
                        .execute();
                String drivefile = "";
                System.out.println("file ::: " + driveService.files().list().execute());
                for (File file : files.getFiles()) {
                    drivefile = file.getName() + "," + drivefile;

                }

这应该有效!它取自ANSI代码表,其中的字符不只是所看到的。它们的行为就像某种形式的命令。

答案 3 :(得分:-1)

这里有一个适用于 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 ? "\033[?25h" : "\033[?25l"); // show/hide cursor
#endif // Windows/Linux
}