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

 时间:2024-10-21 05:49:01

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语言隐藏/显示控制台光标
  • 如何卸载关系型数据库的扩展QGIS?
  • 实况足球手游能用手柄玩吗?阿修罗2使用攻略
  • 怎么发布网站
  • 如何启用每日英语听力查单词自动加入生词本
  • QQ邮箱如何设置SMTP代理收发邮件
  • 热门搜索
    三节三爱手抄报 英语手抄报花边 地理手抄报内容 关于动物的手抄报 我是小学生手抄报 成语故事手抄报 成长的足迹手抄报 手抄报花边简单手绘 关于理想的手抄报 少年中国说手抄报