zoukankan      html  css  js  c++  java
  • C语言控制台窗口图形界面编程(二):窗口缓冲区的设置

           下面介绍几个用于控制台窗口操作的API函数,如下:

     1 //获取控制台窗口信息
     2 GetConsoleScreenBufferInfo();
     3 
     4 //获取控制台窗口标题
     5 GetConsoleTitle();
     6 
     7 //更改指定缓冲区大小
     8 SetConsoleScreenBufferSize();
     9 
    10 //设置控制台窗口标题
    11 SetConsoleTitle();
    12 
    13 //设置控制台窗口信息
    14 SetConsoleWindowInfo();


           下面的示例程序用于说明此类函数的使用:

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <Windows.h>
     4 #include <conio.h>
     5 #define N 255
     6 
     7 int main()
     8 {
     9     HANDLE handle_out;    //定义一个句柄
    10     CONSOLE_SCREEN_BUFFER_INFO scbi;    //定义一个窗口缓冲区信息结构体
    11     COORD size = {80, 25};        //定义一个坐标结构体
    12     char strtitle[N];
    13     handle_out = GetStdHandle(STD_OUTPUT_HANDLE);    //获得标准输出设备句柄
    14     GetConsoleScreenBufferInfo(handle_out, &scbi);    //获得窗口缓冲区信息
    15     GetConsoleTitle(strtitle, N);    //获得当前窗口标题
    16     printf("当前窗口标题为:%s
    ", strtitle);
    17     _getch();
    18     SetConsoleTitle("控制台窗口操作");        //设置窗口标题为“控制台窗口操作”
    19     GetConsoleTitle(strtitle, N);            //获得当前窗口标题
    20     printf("当前窗口标题为:%s
    ", strtitle);
    21     _getch();
    22     SetConsoleScreenBufferSize(handle_out, size);    // 重新设置缓冲区大小
    23     _getch();
    24     SMALL_RECT rc = {0, 0, 80-1, 25-1};        // 重置窗口位置和大小
    25     SetConsoleWindowInfo(handle_out, 1, &rc);
    26     CloseHandle(handle_out);    //关闭标准输出设备句柄
    27     return 0;
    28 }

           其中,SetConsoleScreenBufferSize函数指定新的控制台屏幕缓冲区的大小,以字符列和行为单位。指定的宽度和高度不能小于控制台屏幕缓冲区窗口的宽度和高度。指定的大小也不能小于系统允许的最小大小。这个最低取决于控制台当前的字体大小 (由用户选定)。


           另外,GetConsoleTitle函数的具体实现取是否宏定义了UNICODE(与文件编码形式有关),所以在部分IDE中可能这段示例编译不通过,换一个别的编译器或IDE就行了。本样例在Code::Blocks 13.12编译通过。

  • 相关阅读:
    平衡二叉树之RB树
    平衡二叉树之AVL树
    实现哈希表
    LeetCode Median of Two Sorted Arrays
    LeetCode Minimum Window Substring
    LeetCode Interleaving String
    LeetCode Regular Expression Matching
    PAT 1087 All Roads Lead to Rome
    PAT 1086 Tree Traversals Again
    LeetCode Longest Palindromic Substring
  • 原文地址:https://www.cnblogs.com/JZQT/p/3802439.html
Copyright © 2011-2022 走看看