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