100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 游标式屏幕菜单c语言 【C语言】控制台窗口图形界面编程(六):光标设置

游标式屏幕菜单c语言 【C语言】控制台窗口图形界面编程(六):光标设置

时间:2022-07-13 22:08:26

相关推荐

游标式屏幕菜单c语言 【C语言】控制台窗口图形界面编程(六):光标设置

00. 目录

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;

}

测试结果:

原文:/szitcast/p/10923499.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。