1、申请一个控制台窗口,如果程序本身是控制台程序,可以不用调用
AllocConsole()
2、获取控制台屏幕缓冲区的句柄
HANDLE m_hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
3、设置控制台标题
SetConsoleTitle(_T("控制台标题"));
4、获取控制台标题
char szConsoleTitle[_MAX_PATH] = { 0 };
GetConsoleTitle(szConsoleTitle, _MAX_PATH);
5、设置光标位置
BOOL SetConsoleCursorPosition(_In_ HANDLE hConsoleOutput, _In_ COORD dwCursorPosition);
6、在当前光标位置写入内容
WriteConsole(m_hConsole, lpString, _tcslen(lpString), &dwWritten, NULL);
7、在制定光标位置写入内容
BOOL WriteConsoleOutputCharacter(
_In_ HANDLE hConsoleOutput, // 控制台屏幕缓冲区的句柄
_In_reads_(nLength) LPCSTR lpCharacter,//要向控制台屏幕缓冲区写入的字符
_In_ DWORD nLength, //应写入的字符单元数
_In_ COORD dwWriteCoord, //一个 COORD 结构,它指定字符的字符是要写的第一个单元格的坐标
_Out_ LPDWORD lpNumberOfCharsWritten//指向接收的实际写入控制台屏幕缓冲区的字符数的变量的指针
);
8、设置光标位置
BOOL SetConsoleCursorPosition(_In_ HANDLE hConsoleOutput, _In_ COORD dwCursorPosition);
9、获取屏幕缓存区信息
BOOL GetConsoleScreenBufferInfo(
_In_ HANDLE hConsoleOutput,
_Out_ PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo
);// 控制台窗口信息结构体
typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
COORD dwSize; // 缓冲区大小
COORD dwCursorPosition; // 当前光标位置
WORD wAttributes; // 字符属性(颜色)
SMALL_RECT srWindow; // 当前窗口显示的大小和位置
COORD dwMaximumWindowSize; // 最大的窗口缓冲区大小
} CONSOLE_SCREEN_BUFFER_INFO ;
10、设置窗口位置和大小
BOOL SetConsoleWindowInfo(
_In_ HANDLE hConsoleOutput,
_In_ BOOL bAbsolute, // 绝对位置还是相对位置,一般设定为TRUE
_In_ CONST SMALL_RECT* lpConsoleWindow
);
11、向窗口填充内容并清空屏幕
BOOL FillConsoleOutputCharacter(
__in HANDLE hConsoleOutput, //控制台屏幕缓冲区的句柄
__in TCHAR cCharacter, //要向控制台屏幕缓冲区写入的字符
__in DWORD nLength, //应写入的字符单元数
__in COORD dwWriteCoord, //一个 COORD 结构,它指定字符的字符是要写的第一个单元格的坐标
__out LPDWORD lpNumberOfCharsWritten//指向接收的实际写入控制台屏幕缓冲区的字符数的变量的指针
);
12、设置光标信息
BOOL SetConsoleCursorInfo(
_In_ HANDLE hConsoleOutput,
_In_ CONST CONSOLE_CURSOR_INFO* lpConsoleCursorInfo
);typedef struct _CONSOLE_CURSOR_INFO {
DWORD dwSize;// 光标百分比大小(1~100)
BOOL bVisible; // 是否可见
} CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;
13、获取光标信息
BOOLGetConsoleCursorInfo(
_In_ HANDLE hConsoleOutput,
_Out_ PCONSOLE_CURSOR_INFO lpConsoleCursorInfo
);
14、文本区滚动和移动,将指定的一块文本区域移动到另一个区域,被移空的那块区域由指定字符填充
BOOL ScrollConsoleScreenBuffer(
HANDLE hConsoleOutput, //控制台屏幕缓冲区的句柄
CONST SMALL_RECT* lpScrollRectangle, //要滚动或移动的区域
CONST SMALL_RECT* lpClipRectangle, //裁剪区域
COORD dwDestinationOrigin, //新的位置
CONST CHAR_INFO* lpFill //填充字符
);