【C语言】控制台窗口图形界面编程(六):光标设置 | 您所在的位置:网站首页 › c语言控制台开多个窗口 › 【C语言】控制台窗口图形界面编程(六):光标设置 |
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 实验室设备网 版权所有 |