控制台的光标具有两个属性:dwSize 高度,bVisible 是否显示。
具体步骤:
1.得标准输出设备句柄GetStdHandle(),因为光标是在标准输出设备上显示
2.获取控制台光标信息GetConsoleCursorInfo(),可以跳过
3.设置控制台光标信息SetConsoleCursorInfo()
4.设置光标位置
更多信息大家可以去MSDN上查!
获取设备句柄的函数:
HANDLE WINAPI GetStdHandle(
__in DWORD nStdHandle
);nStdHandle :
1. STD_INPUT_HANDLE 标准输入设备,起初,它是控制台输入缓存区,CONIN$
2. STD_OUTPUT_HANDLE 标准输出设备,起初,它是活动的控制台屏幕缓存区,CONOUT$
3. STD_ERROR_HANDLE 标准报错设备,起初,它是活动的控制台屏幕缓存区,CONOUT$
控制台光标信息结构体:
typedef struct _CONSOLE_CURSOR_INFO {
DWORD dwSize; //光标的高度,控制台一行字符的高度为100,光标的高度为1到100
BOOL bVisible; //是否显示光标,TRUE为显示,FALSE为不显示
} CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO
获取控制台光标信息:
BOOL WINAPI GetConsoleCursorInfo(
__in HANDLE hConsoleOutput,
__out PCONSOLE_CURSOR_INFO lpConsoleCursorInfo
);
hConsoleOutput:控制台屏幕缓存区句柄,必须具有GENERIC_READ权限
lpConsoleCursorInfo:一个指向CONSOLE_CURSOR_INFO的指针,用来接收控制台光标信息
设置控制台光标信息:
BOOL WINAPI SetConsoleCursorInfo(
__in HANDLE hConsoleOutput,
__in const CONSOLE_CURSOR_INFO* lpConsoleCursorInfo
);
hConsoleOutput:控制台屏幕缓存区句柄,必须具有GENERIC_READ权限
lpConsoleCursorInfo:一个指向CONSOLE_CURSOR_INFO的指针,用来设置控制台光标信息
设置控制台光标位置:
void gotoxy(int Wide,int High) //Wide表示列,0为第一列,High表示行,0为第一行
{
COORD loc;
loc.X=Wide;
loc.Y=High;
SetConsoleCursorPosition(hStdout, loc);
}