C语言控制台窗口图形界面编程之五 控制文本移动的函数

控制文本的移动是控制台窗口界面编程的一个很重要的功能,有了这个功能我们可以实现界面的滚动。下面我们介绍一个控制文本移动的函数,如下:

BOOL ScrollConsoleScreenBuffer(             //文本移动函数
    HANDLE hConsoleOutput,                  //句柄
    const SMALL_RECT *lpScrollRectangle,    //移动区域
    const SMALL_RECT *lpClipRectangle,      //裁剪区域,如果为NULL,那么将代表整个屏幕缓冲区
    COORD dwDestinationOrigin,              //移动到的位置,这个点将成为移动区域的左上顶点
    const CHAR_INFO *lpFill                 //空出区域的填充字符
);

下面来看一个移动文本的样例程序,如下

#include <stdio.h>
#include <conio.h>
#include <Windows.h>
#include <stdlib.h>    

int main()
{
    HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE);    //获得标准输出设备句柄
    CONSOLE_SCREEN_BUFFER_INFO csbi;        //定义窗口缓冲区信息结构体
    SMALL_RECT scroll;      //定义移动区域
    COORD pos = {0, 5};     //移动位置
    CHAR_INFO chFill;       //定义填充字符
    GetConsoleScreenBufferInfo(handle_out, &csbi);  //获得窗口缓冲区信息
    //定义填充字符的各个参数及属性
    chFill.Char.AsciiChar = ' ';
    chFill.Attributes = csbi.wAttributes;
    //输出文本
    printf("00000000000000000000000000000\n");
    printf("11111111111111111111111111111\n");
    printf("22222222222222222222222222222\n");
    printf("33333333333333333333333333333\n");
    //确定区域
    scroll.Left = 1;
    scroll.Top = 1;
    scroll.Right = 10;
    scroll.Bottom = 2;
    ScrollConsoleScreenBuffer(handle_out, &scroll, NULL, pos, &chFill); //移动文本
    return 0;
}

在上面的样例程序中,裁剪区域是整个控制台窗口的屏幕缓冲区,现在如果我们把裁剪区域设定为与移动区域一样,也就是说ScrollConsoleScreenBuffer函数的第三个参数也改成&scroll,那么结果会怎么样呢?

本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/C/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索移动
, 文本
, 缓冲区
, scroll
, 窗口
, 数据结构改成c语言
, 区域
, 顶点缓冲
, 裁剪字符串
控制台界面
c语言控制台界面编程、c语言控制台编程、c语言图形界面编程、c语言图形编程、c语言图形化编程,以便于您获取更多的相关知识。

时间: 2024-09-17 03:26:17

C语言控制台窗口图形界面编程之五 控制文本移动的函数的相关文章

C语言控制台窗口图形界面编程之三 设置文本属性的函数

在这里介绍一个设置文本属性的函数,原型如下 BOOL SetConsoleTextAttribute( // 设置WriteConsole等函数的字符属性 HANDLE hConsoleOutput, // 句柄 WORD wAttributes // 文本属性 ); 本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/C/ 顺便提一下文本属性,其实就是颜色属性,有背景色和前景色(就是字符的颜色)两类,每一类只提供

C语言控制台窗口图形界面编程之八 鼠标事件

上次讲的是键盘事件,这次我们介绍鼠标事件.下面先介绍下鼠标事件的结构体以及相关信息. typedef struct _MOUSE_EVENT_RECORD //鼠标事件结构体 { COORD dwMousePosition; //当前鼠标在控制台窗口缓冲区的位置 DWORD dwButtonState; //鼠标按键的状态 DWORD dwControlKeyState; //控制键状态 DWORD dwEventFlags; //鼠标事件类型 } MOUSE_EVENT_RECORD; /*

C语言控制台窗口图形界面编程之六 光标操作

控制台窗口的光标的位置反映的是当前文本输入的插入位置,通过Windows API函数我们可以随意更改光标的位置,下面介绍这个控制光标位置的API函 BOOL SetConsoleCursorPosition( //设置光标位置 HANDLE hConsoleOutput, //句柄 COORD dwCursorPosition //坐标 ); //若函数调用成功则返回非0值 不仅仅是光标的位置,光标的信息我们也可以通过一些API函数来设置,下面介绍光标信息结构体已经获得和设置光标信息的API函数

C语言控制台窗口图形界面编程之一

本系列文章改编自<C语言控制台窗口界面编程(修正版)>.本系列文章会抛弃一些原文中难懂难理解且不常用的部分,并修改了部分样例程序.只为了更加清晰地学习C语言的控制台窗口界面编程.而想要更加深入的了解本系列文章,请阅读<C语言控制台窗口界面编程(修正版)>. <C语言控制台窗口界面编程(修正版)>下载地址:http://download.csdn.net/detail/jzqt_t/7471013 在Windows操作系统下用C语言编写控制台的窗口界面首先要获取当前标准输

C语言控制台窗口图形界面编程之七 键盘事件

输入事件中的键盘事件通常有字符事件和按键事件,这些事件的附带信息构成了键盘输入的信息,而想要读取这些信息,是要通过API函数ReadConsoleInput来获取的,函数原型如下: BOOL ReadConsoleInput( //读取输入信息 HANDLE hConsoleInput, //句柄 PINPUT_RECORD lpBuffer, //输入事件结构体的指针 DWORD nLength, //要读取的记录数 LPDWORD lpNumberOfEventsRead //用来接受成功读

C语言控制台窗口图形界面编程之四 常用的文本输出函数

文本颜色属性已经学会了,那么下面就学习几个比较常用的文本输出函数,如下: BOOL FillConsoleOutputAttribute( // 填充字符属性 HANDLE hConsoleOutput, // 句柄 WORD wAttribute, // 文本属性 DWORD nLength, // 个数 COORD dwWriteCoord, // 开始位置 LPDWORD lpNumberOfAttrsWritten // 返回填充的个数 ); BOOL FillConsoleOutput

C语言控制台窗口图形界面编程之二 用于控制台窗口操作的API函数

下面介绍几个用于控制台窗口操作的API函数,如下: //获取控制台窗口信息 GetConsoleScreenBufferInfo(); //获取控制台窗口标题 GetConsoleTitle(); //更改指定缓冲区大小 SetConsoleScreenBufferSize(); //设置控制台窗口标题 SetConsoleTitle(); //设置控制台窗口信息 SetConsoleWindowInfo(); 下面的示例程序用于说明此类函数的使用: #include <stdio.h> #i

请问java图形界面编程中怎样改变消息提示框中确定按钮的文本内容啊?

问题描述 请问java图形界面编程中怎样改变消息提示框中确定按钮的文本内容啊? 问题补充:恩恩,swing的!请问怎么改啊?xiaolv 写道 解决方案 JOptionPane.setDefaultLocale(Locale.CHINA);JOptionPane.showMessageDialog(null, "11", "22",JOptionPane.INFORMATION_MESSAGE);这个按钮自动集成多语言.只能通来Locale来改.想要OK就用Loca

java-Java图形界面编程怎样动态绘制矩形?

问题描述 Java图形界面编程怎样动态绘制矩形? 就是类似Windows自带画图程序的那种,从一个点拖动到另一个点, 动态地绘制一个任意大小的矩形,大概的思路是怎样的 如果有其它语言实现的,可以讲一下大概的思路啊,不一定要代码 解决方案 '先确定要画的是矩形,在获取鼠标按下点的坐标,在获取移动到的点的坐标,实现移动一次图形更新一次,最后确定下鼠标抬起点的坐标,用以确定最后矩形的的大小 解决方案二: 这里有个完整的例子:http://developer.51cto.com/art/201201/3