VC++ 控制台程序常用接口

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                         //填充字符
);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值