【C语言】控制台窗口图形界面编程(六):光标设置 您所在的位置:网站首页 c语言控制台开多个窗口 【C语言】控制台窗口图形界面编程(六):光标设置

【C语言】控制台窗口图形界面编程(六):光标设置

2023-10-04 08:36| 来源: 网络整理| 查看: 265

00. 目录

目录00. 目录01. CONSOLE_CURSOR_INFO结构02. GetConsoleCursorInfo函数03. SetConsoleCursorInfo函数04. SetConsoleCursorPosition函数

01. CONSOLE_CURSOR_INFO结构

包含有关控制台光标的信息。

typedef struct _CONSOLE_CURSOR_INFO { DWORD dwSize; BOOL bVisible; } CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;

dwSize 光标填充的字符单元格的百分比。该值介于1和100之间。光标外观会发生变化,从完全填充单元格到显示为单元格底部的水平线。

注意 虽然dwSize值通常介于1和100之间,但在某些情况下,可能会返回该范围之外的值。例如,如果在注册表中将CursorSize设置为0,则返回的dwSize值将为0。

bVisible 光标的可见性。如果光标可见,则此成员为TRUE。

02. GetConsoleCursorInfo函数

获取有关指定控制台屏幕缓冲区的光标大小和可见性的信息。

类型声明

BOOL WINAPI GetConsoleCursorInfo( _In_ HANDLE hConsoleOutput, _Out_ PCONSOLE_CURSOR_INFO lpConsoleCursorInfo ); 功能: 获取光标相关信息 参数: hConsoleOutput 控制台屏幕缓冲区的句柄。句柄必须具有GENERIC_READ访问权限。 lpConsoleCursorInfo 指向CONSOLE_CURSOR_INFO结构的指针,该结构接收有关控制台游标的信息。 返回值: 如果函数成功,则返回值为非零值。 如果函数失败,则返回值为零。要获取扩展错误信息,请调用GetLastError。

参考程序

#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include int main(void) { //定义句柄变量 HANDLE hOut = NULL; //光标信息变量 CONSOLE_CURSOR_INFO cursorInfo; //获取标准输出句柄 hOut = GetStdHandle(STD_OUTPUT_HANDLE); //获取当前光标信息 GetConsoleCursorInfo(hOut, &cursorInfo); printf("光标默认大小: %d 光标是否可见: %d\n", cursorInfo.dwSize, cursorInfo.bVisible); //关闭句柄 CloseHandle(hOut); system("pause"); return 0; }

执行结果

03. SetConsoleCursorInfo函数

设置指定控制台屏幕缓冲区的光标大小和可见性。

函数声明:

BOOL WINAPI SetConsoleCursorInfo( _In_ HANDLE hConsoleOutput, _In_ const CONSOLE_CURSOR_INFO *lpConsoleCursorInfo ); 功能: 设置光标的属性 参数: hConsoleOutput 控制台屏幕缓冲区的句柄。句柄必须具有GENERIC_READ访问权限。 lpConsoleCursorInfo 指向CONSOLE_CURSOR_INFO结构的指针,该结构为控制台屏幕缓冲区的游标提供新规范。 返回值: 如果函数成功,则返回值为非零值。 如果函数失败,则返回值为零。要获取扩展错误信息,请调用GetLastError。

参考程序

#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include int main(void) { //定义句柄变量 HANDLE hOut = NULL; //光标信息变量 CONSOLE_CURSOR_INFO cursorInfo; //获取标准输出句柄 hOut = GetStdHandle(STD_OUTPUT_HANDLE); //获取当前光标信息 GetConsoleCursorInfo(hOut, &cursorInfo); printf("光标默认大小: %d 光标是否可见: %d\n", cursorInfo.dwSize, cursorInfo.bVisible); getchar(); //设置光标的尺寸为20 cursorInfo.dwSize = 5; SetConsoleCursorInfo(hOut, &cursorInfo); getchar(); //设置光标的尺寸为50 cursorInfo.dwSize = 50; SetConsoleCursorInfo(hOut, &cursorInfo); getchar(); //设置光标的尺寸为100 cursorInfo.dwSize = 100; SetConsoleCursorInfo(hOut, &cursorInfo); getchar(); //设置光标不可见 cursorInfo.dwSize = 25; cursorInfo.bVisible = 0; SetConsoleCursorInfo(hOut, &cursorInfo); getchar(); //关闭句柄 CloseHandle(hOut); system("pause"); return 0; }

执行结果

04. SetConsoleCursorPosition函数

设置指定控制台屏幕缓冲区中的光标位置。

函数声明:

BOOL WINAPI SetConsoleCursorPosition( _In_ HANDLE hConsoleOutput, _In_ COORD dwCursorPosition ); 功能: 设置光标的位置 参数: hConsoleOutput 控制台屏幕缓冲区的句柄。句柄必须具有GENERIC_READ访问权限。 dwCursorPosition 用于指定新的光标位置(以字符为单位)。坐标是屏幕缓冲区字符单元格的列和行。坐标必须位于控制台屏幕缓冲区的边界内。 返回值: 如果函数成功,则返回值为非零值。 如果函数失败,则返回值为零。要获取扩展错误信息,请调用GetLastError。

参考程序;

#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include int main(void) { //定义句柄变量 HANDLE hOut = NULL; COORD pos; //获取标准输出句柄 hOut = GetStdHandle(STD_OUTPUT_HANDLE); pos.X = 8; pos.Y = 8; //设置光标的位置 SetConsoleCursorPosition(hOut, pos); printf("hello itcast1"); pos.X = 18; pos.Y = 16; //设置光标的位置 SetConsoleCursorPosition(hOut, pos); printf("hello itcast2"); //关闭句柄 CloseHandle(hOut); system("pause"); return 0; }

测试结果:



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有