教你在windows上用C语言隐藏/显示控制台光标

2025-10-28 10:03:50

1、我们要用到windows的API接口。里面有一个SetConsoleCursorInfo可以解决我们的问题。

先打开MSDN查找这个函数,重要的信息小编已经用红色画笔标记了。

我们先来看看函数原型

BOOL SetConsoleCursorInfo(  HANDLE hConsoleOutput,  const CONSOLE_CURSOR_INFO* lpConsoleCursorInfo);

返回值为BOOL类型,设置成功时返回非0值True,失败返回0 False

第一个参数是用于传递控制台句柄,第二个参数则是一个CONSOLE_CURSOR_INFO类型的结构体指针。

教你在windows上用C语言隐藏/显示控制台光标

2、开始写出一个标准main函数。

#include <windows.h>

#include <stdio.h>

int main(int argc,char * argv[])

{

 return 0;

}

教你在windows上用C语言隐藏/显示控制台光标

3、我们用GetStdHandle接口函数来获得控制台句柄。

该接口原型如下:

HANDLE GetStdHandle(  DWORD nStdHandle);

提供的参数宏如下:

标准输入:STD_INPUT_HANDLE (DWORD)-10

标准输出:STD_OUTPUT_HANDLE (DWORD)-11

标准错误:STD_ERROR_HANDL (DWORD)-12

返回指定标准设备的句柄,我们用一个fd变量接收该返回值。

HANDLE fd = GetStdHandle(STD_OUTPUT_HANDLE);

教你在windows上用C语言隐藏/显示控制台光标

4、然后我们要定义一个CONSOLE_CURSOR_INFO类型的结构体,为了设置光标隐藏和显示效果。

CONSOLE_CURSOR_INFO结构体的原型如下:

typedef struct _CONSOLE_CURSOR_INFO {  DWORD dwSize;  BOOL bVisible;

 } CONSOLE_CURSOR_INFO,*PCONSOLE_CURSOR_INFO;

其下的2个成员,bVisible是设置光标显示和隐藏,dwSize则是设置光标的粗度(1-100)

当我们设置bVisible为真(非0)时,显示光标,设置bVisible为假(0)时,隐藏光标。

教你在windows上用C语言隐藏/显示控制台光标

5、设置bVisible为0,隐藏光标。

CONSOLE_CURSOR_INFO cinfo;

cinfo.bVisible = 0;

//设置光标隐藏

cinfo.dwSize = 1;

还要,千万要注意一点就是dwSize成员一定要有数值(非0的数值,即1~100),否则不生效。

教你在windows上用C语言隐藏/显示控制台光标

6、调用SetConsoleCursorInfo接口使其生效。

if(SetConsoleCursorInfo(fd,&cinfo))

  printf("执行成功\n");

else

  printf("执行失败\n");

编译运行可以看到光标隐藏了。

教你在windows上用C语言隐藏/显示控制台光标

7、所有代码如下:

#include <windows.h>

#include <stdio.h>

int main(int argc,char * argv[])

{

  HANDLE fd = GetStdHandle(STD_OUTPUT_HANDLE);

  CONSOLE_CURSOR_INFO cinfo;

  cinfo.bVisible = 0;

  cinfo.dwSize = 1;

  if(SetConsoleCursorInfo(fd,&cinfo))

    printf("执行成功\n");

  else

    printf("执行失败\n");

  return 0;

}

我们可以修改下,用scanf获得用户键盘输入,然后根据用户输入的字符串来决定显示或隐藏光标。

#include <windows.h>

#include <stdio.h>

#include <string.h>

int main(int argc,char * argv[])

{

  HANDLE fd = GetStdHandle(STD_OUTPUT_HANDLE);

  CONSOLE_CURSOR_INFO cinfo;

  char str[4];

  while(1)

  {

    cinfo.dwSize = 1;

    printf("请输入on/off开启/关闭光标显示:\n");

    scanf("%s",str);

    if(!strcmp(str,"off"))

   {

     cinfo.bVisible = 0;

     SetConsoleCursorInfo(fd,&cinfo);

   }

   else if(!strcmp(str,"on"))

   {

     cinfo.bVisible = 1;

     SetConsoleCursorInfo(fd,&cinfo);

   }

   else

     printf("指令错误,请重新输入,输入on或者off打开或者关闭光标显示\n");

  }

  return 0;

}

教你在windows上用C语言隐藏/显示控制台光标

1、怎么关注?

在经验的右上角小编头像旁边点击关注,如图。

教你在windows上用C语言隐藏/显示控制台光标

2、怎么点赞?

请在经验左侧点赞,如图。

教你在windows上用C语言隐藏/显示控制台光标

3、怎么投票?

在经验的下方点击投票,如图。

教你在windows上用C语言隐藏/显示控制台光标

4、如果觉得小编写的还不错,可以动动鼠标把它分享给您的朋友。

如何分享,鼠标移动到右下角第一个按钮上,在弹出的选项中进行分享,如图。

不尽感激。

教你在windows上用C语言隐藏/显示控制台光标

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢