• 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编译通过。

  • 相关阅读:
    x64 寄存器使用
    汇编语言学习笔记(十二)-浮点指令----ACM
    浮点数的加减计算总结
    Mobile First! Wijmo 5 之 架构
    CSDN头版头条 《近匠》 Wijmo 5 CTO:从Web到移动,我的25年编程生涯
    超越Web,Javascript在物联网的应用
    《我与葡萄城的故事》— 征文大赛
    介绍一款开源的类Excel电子表格软件
    2014年GDG西安 -- DevFest Season1
    异步陷阱之死锁篇
  • 原文地址:https://www.cnblogs.com/JZQT/p/3802439.html
Copyright © 2020-2023  润新知