多语言展示
当前在线:522今日阅读:83今日分享:25

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

相信很多小伙伴在学习开发控制台游戏的时候,总是会遇到这样的问题,怎么隐藏控制台的光标呢?今天小编就教小伙伴怎么在Windows上用C语言隐藏和显示控制台光标。希望可以帮到大家。
工具/原料

C for windows

方法/步骤
1

我们要用到windows的API接口。里面有一个SetConsoleCursorInfo可以解决我们的问题。先打开MSDN查找这个函数,重要的信息小编已经用红色画笔标记了。我们先来看看函数原型BOOL SetConsoleCursorInfo(  HANDLE hConsoleOutput,  const CONSOLE_CURSOR_INFO* lpConsoleCursorInfo);返回值为BOOL类型,设置成功时返回非0值True,失败返回0 False第一个参数是用于传递控制台句柄,第二个参数则是一个CONSOLE_CURSOR_INFO类型的结构体指针。

2

开始写出一个标准main函数。#include #include int main(int argc,char * argv[]){ return 0;}

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);

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)时,隐藏光标。

5

设置bVisible为0,隐藏光标。CONSOLE_CURSOR_INFO cinfo;cinfo.bVisible = 0;//设置光标隐藏cinfo.dwSize = 1;还要,千万要注意一点就是dwSize成员一定要有数值(非0的数值,即1~100),否则不生效。

6

调用SetConsoleCursorInfo接口使其生效。 if(SetConsoleCursorInfo(fd,&cinfo))  printf('执行成功\n'); else  printf('执行失败\n');编译运行可以看到光标隐藏了。

7

所有代码如下:#include #include 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 #include #include 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;}

是否帮到了您?如果有帮到您,请点个关注、点个投票、点个分享、点个赞
1

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

2

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

3

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

4

如果觉得小编写的还不错,可以动动鼠标把它分享给您的朋友。如何分享,鼠标移动到右下角第一个按钮上,在弹出的选项中进行分享,如图。不尽感激。

注意事项
1

授人予鱼,不如授人予渔

2

如有疑问,点击左下角的投票或者有得给小编留言,小编看到会第一时间回复您,谢谢

3

如果喜欢本经验,请关注我。可以把它分享给您的朋友,请点个投票点个收藏。谢谢,您的支持是我最大的动力。

推荐信息