首页 > 电脑专区 > windows >

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

来源:互联网 2023-02-20 17:32:28 379

相信很多小伙伴在学习开发控制台游戏的时候,总是会遇到这样的问题,怎么隐藏控制台的光标呢?oiI办公区 - 实用经验教程分享!

今天小编就教小伙伴怎么在Windows上用C语言隐藏和显示控制台光标。oiI办公区 - 实用经验教程分享!

希望可以帮到大家。oiI办公区 - 实用经验教程分享!

教你在windows上用C语言隐藏/显示控制台光标oiI办公区 - 实用经验教程分享!

工具/原料

  • C for windows

方法/步骤

  • 1

    我们要用到windows的API接口。里面有一个SetConsoleCursorInfo可以解决我们的问题。oiI办公区 - 实用经验教程分享!

    先打开MSDN查找这个函数,重要的信息小编已经用红色画笔标记了。oiI办公区 - 实用经验教程分享!

    我们先来看看函数原型oiI办公区 - 实用经验教程分享!

    BOOL SetConsoleCursorInfo( HANDLE hConsoleOutput, const CONSOLE_CURSOR_INFO* lpConsoleCursorInfo);oiI办公区 - 实用经验教程分享!

    返回值为BOOL类型,设置成功时返回非0值True,失败返回0 FalseoiI办公区 - 实用经验教程分享!

    第一个参数是用于传递控制台句柄,第二个参数则是一个CONSOLE_CURSOR_INFO类型的结构体指针。oiI办公区 - 实用经验教程分享!

    教你在windows上用C语言隐藏/显示控制台光标oiI办公区 - 实用经验教程分享!

  • 2

    开始写出一个标准main函数。oiI办公区 - 实用经验教程分享!

    #include windows.h>oiI办公区 - 实用经验教程分享!

    #include stdio.h>oiI办公区 - 实用经验教程分享!

    int main(int argc,char * argv[])oiI办公区 - 实用经验教程分享!

    {oiI办公区 - 实用经验教程分享!

    return 0;oiI办公区 - 实用经验教程分享!

    }oiI办公区 - 实用经验教程分享!

    教你在windows上用C语言隐藏/显示控制台光标oiI办公区 - 实用经验教程分享!

  • 3

    我们用GetStdHandle接口函数来获得控制台句柄。oiI办公区 - 实用经验教程分享!

    该接口原型如下:oiI办公区 - 实用经验教程分享!

    HANDLE GetStdHandle( DWORD nStdHandle);oiI办公区 - 实用经验教程分享!

    oiI办公区 - 实用经验教程分享!

    提供的参数宏如下:oiI办公区 - 实用经验教程分享!

    标准输入:STD_INPUT_HANDLE (DWORD)-10oiI办公区 - 实用经验教程分享!

    标准输出:STD_OUTPUT_HANDLE (DWORD)-11oiI办公区 - 实用经验教程分享!

    标准错误:STD_ERROR_HANDL (DWORD)-12oiI办公区 - 实用经验教程分享!

    返回指定标准设备的句柄,我们用一个fd变量接收该返回值。oiI办公区 - 实用经验教程分享!

    HANDLE fd = GetStdHandle(STD_OUTPUT_HANDLE);oiI办公区 - 实用经验教程分享!

    教你在windows上用C语言隐藏/显示控制台光标oiI办公区 - 实用经验教程分享!

  • 4

    然后我们要定义一个CONSOLE_CURSOR_INFO类型的结构体,为了设置光标隐藏和显示效果。oiI办公区 - 实用经验教程分享!

    CONSOLE_CURSOR_INFO结构体的原型如下:oiI办公区 - 实用经验教程分享!

    typedef struct _CONSOLE_CURSOR_INFO { DWORD dwSize; BOOL bVisible;oiI办公区 - 实用经验教程分享!

    } CONSOLE_CURSOR_INFO,*PCONSOLE_CURSOR_INFO;oiI办公区 - 实用经验教程分享!

    其下的2个成员,bVisible是设置光标显示和隐藏,dwSize则是设置光标的粗度(1-100)oiI办公区 - 实用经验教程分享!

    当我们设置bVisible为真(非0)时,显示光标,设置bVisible为假(0)时,隐藏光标。oiI办公区 - 实用经验教程分享!

    教你在windows上用C语言隐藏/显示控制台光标oiI办公区 - 实用经验教程分享!

  • 5

    设置bVisible为0,隐藏光标。oiI办公区 - 实用经验教程分享!

    CONSOLE_CURSOR_INFO cinfo;oiI办公区 - 实用经验教程分享!

    cinfo.bVisible = 0;oiI办公区 - 实用经验教程分享!

    //设置光标隐藏oiI办公区 - 实用经验教程分享!

    cinfo.dwSize = 1;oiI办公区 - 实用经验教程分享!

    还要,千万要注意一点就是dwSize成员一定要有数值(非0的数值,即1~100),否则不生效。oiI办公区 - 实用经验教程分享!

    教你在windows上用C语言隐藏/显示控制台光标oiI办公区 - 实用经验教程分享!

  • 6

    调用SetConsoleCursorInfo接口使其生效。oiI办公区 - 实用经验教程分享!

    if(SetConsoleCursorInfo(fd,&cinfo))oiI办公区 - 实用经验教程分享!

    printf("执行成功n");oiI办公区 - 实用经验教程分享!

    elseoiI办公区 - 实用经验教程分享!

    printf("执行失败n");oiI办公区 - 实用经验教程分享!

    编译运行可以看到光标隐藏了。oiI办公区 - 实用经验教程分享!

    教你在windows上用C语言隐藏/显示控制台光标oiI办公区 - 实用经验教程分享!

  • 7

    所有代码如下:oiI办公区 - 实用经验教程分享!

    #include windows.h>oiI办公区 - 实用经验教程分享!

    #include stdio.h>oiI办公区 - 实用经验教程分享!

    oiI办公区 - 实用经验教程分享!

    int main(int argc,char * argv[])oiI办公区 - 实用经验教程分享!

    {oiI办公区 - 实用经验教程分享!

    HANDLE fd = GetStdHandle(STD_OUTPUT_HANDLE);oiI办公区 - 实用经验教程分享!

    CONSOLE_CURSOR_INFO cinfo;oiI办公区 - 实用经验教程分享!

    cinfo.bVisible = 0;oiI办公区 - 实用经验教程分享!

    cinfo.dwSize = 1;oiI办公区 - 实用经验教程分享!

    oiI办公区 - 实用经验教程分享!

    oiI办公区 - 实用经验教程分享!

    if(SetConsoleCursorInfo(fd,&cinfo))oiI办公区 - 实用经验教程分享!

    printf("执行成功n");oiI办公区 - 实用经验教程分享!

    elseoiI办公区 - 实用经验教程分享!

    printf("执行失败n");oiI办公区 - 实用经验教程分享!

    oiI办公区 - 实用经验教程分享!

    return 0;oiI办公区 - 实用经验教程分享!

    }oiI办公区 - 实用经验教程分享!

    我们可以修改下,用scanf获得用户键盘输入,然后根据用户输入的字符串来决定显示或隐藏光标。oiI办公区 - 实用经验教程分享!

    #include windows.h>oiI办公区 - 实用经验教程分享!

    #include stdio.h>oiI办公区 - 实用经验教程分享!

    #include string.h>oiI办公区 - 实用经验教程分享!

    oiI办公区 - 实用经验教程分享!

    int main(int argc,char * argv[])oiI办公区 - 实用经验教程分享!

    {oiI办公区 - 实用经验教程分享!

    HANDLE fd = GetStdHandle(STD_OUTPUT_HANDLE);oiI办公区 - 实用经验教程分享!

    CONSOLE_CURSOR_INFO cinfo;oiI办公区 - 实用经验教程分享!

    oiI办公区 - 实用经验教程分享!

    char str[4];oiI办公区 - 实用经验教程分享!

    oiI办公区 - 实用经验教程分享!

    while(1)oiI办公区 - 实用经验教程分享!

    {oiI办公区 - 实用经验教程分享!

    cinfo.dwSize = 1;oiI办公区 - 实用经验教程分享!

    printf("请输入on/off开启/关闭光标显示:n");oiI办公区 - 实用经验教程分享!

    scanf("%s",str);oiI办公区 - 实用经验教程分享!

    if(!strcmp(str,"off"))oiI办公区 - 实用经验教程分享!

    {oiI办公区 - 实用经验教程分享!

    cinfo.bVisible = 0;oiI办公区 - 实用经验教程分享!

    SetConsoleCursorInfo(fd,&cinfo);oiI办公区 - 实用经验教程分享!

    }oiI办公区 - 实用经验教程分享!

    else if(!strcmp(str,"on"))oiI办公区 - 实用经验教程分享!

    {oiI办公区 - 实用经验教程分享!

    cinfo.bVisible = 1;oiI办公区 - 实用经验教程分享!

    SetConsoleCursorInfo(fd,&cinfo);oiI办公区 - 实用经验教程分享!

    }oiI办公区 - 实用经验教程分享!

    elseoiI办公区 - 实用经验教程分享!

    printf("指令错误,请重新输入,输入on或者off打开或者关闭光标显示n");oiI办公区 - 实用经验教程分享!

    }oiI办公区 - 实用经验教程分享!

    return 0;oiI办公区 - 实用经验教程分享!

    }oiI办公区 - 实用经验教程分享!

    教你在windows上用C语言隐藏/显示控制台光标oiI办公区 - 实用经验教程分享!

  • 7本页面未经许可获取自百度经验
  • 是否帮到了您?如果有帮到您,请点个关注、点个投票、点个分享、点个赞

  • 1

    怎么关注?oiI办公区 - 实用经验教程分享!

    在经验的右上角小编头像旁边点击关注,如图。oiI办公区 - 实用经验教程分享!

    教你在windows上用C语言隐藏/显示控制台光标oiI办公区 - 实用经验教程分享!

  • 2

    怎么点赞?oiI办公区 - 实用经验教程分享!

    请在经验左侧点赞,如图。oiI办公区 - 实用经验教程分享!

    教你在windows上用C语言隐藏/显示控制台光标oiI办公区 - 实用经验教程分享!

  • 3

    怎么投票?oiI办公区 - 实用经验教程分享!

    在经验的下方点击投票,如图。oiI办公区 - 实用经验教程分享!

    教你在windows上用C语言隐藏/显示控制台光标oiI办公区 - 实用经验教程分享!

  • 4

    如果觉得小编写的还不错,可以动动鼠标把它分享给您的朋友。oiI办公区 - 实用经验教程分享!

    如何分享,鼠标移动到右下角第一个按钮上,在弹出的选项中进行分享,如图。oiI办公区 - 实用经验教程分享!

    不尽感激。oiI办公区 - 实用经验教程分享!

    教你在windows上用C语言隐藏/显示控制台光标oiI办公区 - 实用经验教程分享!

  • 注意事项

    • 授人予鱼,不如授人予渔
    • 如有疑问,点击左下角的投票或者有得给小编留言,小编看到会第一时间回复您,谢谢
    • 如果喜欢本经验,请关注我。可以把它分享给您的朋友,请点个投票点个收藏。谢谢,您的支持是我最大的动力。

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!oiI办公区 - 实用经验教程分享!


    标签: C语言操作系统语言隐藏控制

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码