控制台窗口的光标的位置反映的是当前文本输入的插入位置,通过Windows API函数我们可以随意更改光标的位置,下面介绍这个控制光标位置的API函数,如下:
BOOL SetConsoleCursorPosition( //设置光标位置 HANDLE hConsoleOutput, //句柄 COORD dwCursorPosition //坐标 ); //若函数调用成功则返回非0值
不仅仅是光标的位置,光标的信息我们也可以通过一些API函数来设置,下面介绍光标信息结构体已经获得和设置光标信息的API函数,如下:
typedef struct _CONSOLE_CURSOR_INFO //光标信息结构体 { DWORD dwSize; //光标尺寸大小,范围是1~100 BOOL bVisible; //表示光标是否可见,true表示可见 } CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO; BOOL GetConsoleCursorInfo( //获得光标信息 HANDLE hConsoleOutput, //句柄 PCONSOLE_CURSOR_INFO lpConsoleCursorInfo //光标信息,注意这是个指针类型 ); BOOL SetConsoleCursorInfo( //设置光标信息 HANDLE hConsoleOutput, //句柄 const CONSOLE_CURSOR_INFO *lpConsoleCursorInfo //光标信息 );
下面的示例程序来演示以上函数的使用
#include <stdio.h> #include <Windows.h> #include <conio.h> #include <stdlib.h> int main() { HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //获得标准输出设备句柄 CONSOLE_CURSOR_INFO cci; //定义光标信息结构体 GetConsoleCursorInfo(handle_out, &cci); //获得当前光标信息 _getch(); cci.dwSize = 1; //设置光标尺寸为1 SetConsoleCursorInfo(handle_out, &cci); _getch(); cci.dwSize = 50; //设置光标尺寸为50 SetConsoleCursorInfo(handle_out, &cci); _getch(); cci.dwSize = 100; //设置光标尺寸为100 SetConsoleCursorInfo(handle_out, &cci); _getch(); cci.bVisible = false; //设置光标为不可见 SetConsoleCursorInfo(handle_out, &cci); _getch(); return 0; }