zoukankan      html  css  js  c++  java
  • 控制台窗口操作

      1   用于控制台窗口操作的API函数如下:
      2  
      3 GetConsoleScreenBufferInfo 获取控制台窗口信息
      4 GetConsoleTitle 获取控制台窗口标题
      5 ScrollConsoleScreenBuffer 在缓冲区中移动数据块
      6 SetConsoleScreenBufferSize 更改指定缓冲区大小
      7 SetConsoleTitle 设置控制台窗口标题
      8 SetConsoleWindowInfo 设置控制台窗口信息
      9 
     10 此外,还有窗口字体、显示模式等控制函数,这里不再细说。下列举一个示例,程序如下:
     11 
     12 #include 
     13 #include 
     14 #include 
     15 void main()
     16 {
     17 HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); 
     18 // 获取标准输出设备句柄
     19 CONSOLE_SCREEN_BUFFER_INFO bInfo; // 窗口缓冲区信息
     20 GetConsoleScreenBufferInfo(hOut, bInfo );
     21 // 获取窗口缓冲区信息
     22 char strTitle[255];
     23 GetConsoleTitle(strTitle, 255); // 获取窗口标题
     24 printf("当前窗口标题是:%s
    ", strTitle);
     25 _getch();
     26 SetConsoleTitle("控制台窗口操作"); // 获取窗口标题
     27 _getch();
     28 COORD size = ;
     29 SetConsoleScreenBufferSize(hOut,size); // 重新设置缓冲区大小
     30 _getch();
     31 SMALL_RECT rc = ; // 重置窗口位置和大小
     32 SetConsoleWindowInfo(hOut,true ,&rc);
     33 CloseHandle(hOut); // 关闭标准输出设备句柄
     34 } 
     35 
     36   需要说明的是,控制台窗口的原点坐标是(0, 0),而最大的坐标是缓冲区大小减1,例如当缓冲区大小为80*25时,其最大的坐标是(79, 24)。
     37 
     38   四、文本属性操作
     39 
     40   与DOS字符相似,控制台窗口中的字符也有相应的属性。这些属性分为:文本的前景色、背景色和双字节字符集(DBCS)属性三种。事实上,我们最关心是文本颜色,这样可以构造出美观的界面。颜色属性都是一些预定义标识:
     41 
     42 FOREGROUND_BLUE 蓝色
     43 FOREGROUND_GREEN 绿色
     44 FOREGROUND_RED 红色
     45 FOREGROUND_INTENSITY 加强
     46 BACKGROUND_BLUE 蓝色背景
     47 BACKGROUND_GREEN 绿色背景
     48 BACKGROUND_RED 红色背景
     49 BACKGROUND_INTENSITY 背景色加强
     50 COMMON_LVB_REVERSE_VIDEO 反色
     51 
     52 与文本属性相关的主要函数有:
     53 
     54 BOOL FillConsoleOutputAttribute( // 填充字符属性
     55 HANDLE hConsoleOutput, // 句柄
     56 WORD wAttribute, // 文本属性
     57 DWORD nLength, // 个数
     58 COORD dwWriteCoord, // 开始位置
     59 LPDWORD lpNumberOfAttrsWritten // 返回填充的个数
     60 );
     61 
     62 BOOL SetConsoleTextAttribute( // 设置WriteConsole等函数的字符属性
     63 HANDLE hConsoleOutput, // 句柄
     64 WORD wAttributes // 文本属性
     65 );
     66 
     67 BOOL WriteConsoleOutputAttribute( // 在指定位置处写属性
     68 HANDLE hConsoleOutput, // 句柄
     69 CONST WORD *lpAttribute, // 属性
     70 DWORD nLength, // 个数
     71 COORD dwWriteCoord, // 起始位置
     72 LPDWORD lpNumberOfAttrsWritten // 已写个数
     73 );
     74 
     75 另外,获取当前控制台窗口的文本属性是通过调用函数GetConsoleScreenBufferInfo后,在CONSOLE_SCREEN_ BUFFER_INFO结构成员wAttributes中得到。
     76 
     77   五、文本输出
     78 
     79   文本输出函数有:
     80 
     81 BOOL FillConsoleOutputCharacter( // 填充指定数据的字符
     82 HANDLE hConsoleOutput, // 句柄
     83 TCHAR cCharacter, // 字符
     84 DWORD nLength, // 字符个数
     85 COORD dwWriteCoord, // 起始位置
     86 LPDWORD lpNumberOfCharsWritten // 已写个数
     87 );
     88 
     89 BOOL WriteConsole( // 在当前光标位置处插入指定数量的字符
     90 HANDLE hConsoleOutput, // 句柄
     91 CONST VOID *lpBuffer, // 字符串
     92 DWORD nNumberOfCharsToWrite, // 字符个数
     93 LPDWORD lpNumberOfCharsWritten, // 已写个数
     94 LPVOID lpReserved // 保留
     95 );
     96 
     97 BOOL WriteConsoleOutput( // 向指定区域写带属性的字符
     98 HANDLE hConsoleOutput, // 句柄
     99 CONST CHAR_INFO *lpBuffer, // 字符数据区
    100 COORD dwBufferSize, // 数据区大小
    101 COORD dwBufferCoord, // 起始坐标
    102 PSMALL_RECT lpWriteRegion // 要写的区域
    103 );
    104 
    105 BOOL WriteConsoleOutputCharacter( // 在指定位置处插入指定数量的字符
    106 HANDLE hConsoleOutput, // 句柄
    107 LPCTSTR lpCharacter, // 字符串
    108 DWORD nLength, // 字符个数
    109 COORD dwWriteCoord, // 起始位置
    110 LPDWORD lpNumberOfCharsWritten // 已写个数
    111 );
    112 
    113 可以看出:WriteConsoleOutput函数功能相当于SetConsoleTextAttribute和WriteConsole的功能。而WriteConsoleOutputCharacter函数相当于SetConsoleCursorPosition(设置光标位置)和WriteConsole的功能。不过在具体使用要注意它们的区别。
  • 相关阅读:
    转:java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
    Grid组件 列头居中
    XAML文档基础
    WPF框架之MVVM系列(一)
    WPF 树型控件(TreeView)
    WPF自定义控件开发
    ASP.NET MVC系列一:Global.asax用法分析
    WPF基础系列之 控件与布局
    WPF 自定义控件基类
    DbTool验证码
  • 原文地址:https://www.cnblogs.com/Lee-geeker/p/3143113.html
Copyright © 2011-2022 走看看