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

文本颜色属性已经学会了,那么下面就学习几个比较常用的文本输出函数,如下:

BOOL FillConsoleOutputAttribute(    // 填充字符属性
HANDLE hConsoleOutput,              // 句柄
WORD wAttribute,                    // 文本属性
DWORD nLength,                      // 个数
COORD dwWriteCoord,                 // 开始位置
LPDWORD lpNumberOfAttrsWritten      // 返回填充的个数
);
BOOL FillConsoleOutputCharacter(    // 填充指定数据的字符
HANDLE hConsoleOutput,              // 句柄
TCHAR cCharacter,                   // 字符
DWORD nLength,                      // 字符个数
COORD dwWriteCoord,                 // 起始位置
LPDWORD lpNumberOfCharsWritten      // 已写个数
);
BOOL WriteConsoleOutputCharacter(   // 在指定位置处插入指定数量的字符
HANDLE hConsoleOutput,              // 句柄
LPCTSTR lpCharacter,                // 字符串
DWORD nLength,                      // 字符个数
COORD dwWriteCoord,                 // 起始位置
LPDWORD lpNumberOfCharsWritten      // 已写个数
);

另外再介绍一个表示区域的结构体,如下:

typedef struct _SMALL_RECT  //表示矩形区域的结构体
{
  SHORT Left;       //左边界
  SHORT Top;        //上边界
  SHORT Right;      //右边界
  SHORT Bottom;     //下边界
} SMALL_RECT;
/*
微软官方的说法是
Left    区域的左上顶点的X坐标
Top     区域的左上顶点的Y坐标
Right   区域的右下顶点的X坐标
Bottom  区域的右下顶点的Y坐标
*/

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

通过以上的文本输出函数,我们来做一个简单的在一个具有阴影效果的窗口显示字符串的示例程序,如下:

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

int main()
{
    char *str = "Hello World!";     //定义输出信息
    int len = strlen(str), i;
    WORD shadow = BACKGROUND_INTENSITY;     //阴影属性
    WORD text = BACKGROUND_GREEN | BACKGROUND_INTENSITY;    //文本属性
    HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE);    //获得标准输出设备句柄
    CONSOLE_SCREEN_BUFFER_INFO csbi;    //定义窗口缓冲区信息结构体
    GetConsoleScreenBufferInfo(handle_out, &csbi);  //获得窗口缓冲区信息
    SMALL_RECT rc;      //定义一个文本框输出区域
    COORD posText;      //定义文本框的起始坐标
    COORD posShadow;    //定义阴影框的起始坐标
    //确定区域的边界
    rc.Top = 8;     //上边界
    rc.Bottom = rc.Top + 4;     //下边界
    rc.Left = (csbi.dwSize.X - len) / 2 - 2;    //左边界,为了让输出的字符串居中
    rc.Right = rc.Left + len + 4;   //右边界
    //确定文本框起始坐标
    posText.X = rc.Left;
    posText.Y = rc.Top;
    //确定阴影框的起始坐标
    posShadow.X = posText.X + 1;
    posShadow.Y = posText.Y + 1;
    for (i=0; i<5; ++i)     //先输出阴影框
    {
        FillConsoleOutputAttribute(handle_out, shadow, len + 4, posShadow, NULL);
        posShadow.Y++;
    }
    for (i=0; i<5; ++i)     //在输出文本框,其中与阴影框重合的部分会被覆盖掉
    {
        FillConsoleOutputAttribute(handle_out, text, len + 4, posText, NULL);
        posText.Y++;
    }
    //设置文本输出处的坐标
    posText.X = rc.Left + 2;
    posText.Y = rc.Top + 2;
    WriteConsoleOutputCharacter(handle_out, str, len, posText, NULL);   //输出字符串
    SetConsoleTextAttribute(handle_out, csbi.wAttributes);   // 恢复原来的属性
    CloseHandle(handle_out);
    return 0;
}

以上样例在Code::Blocks 13.12中编译通过。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索坐标
, 句柄
, 文本
, 输出
, 区域
, 超文本输出
, 顶点缓冲
, 起始
输出窗口
c语言控制台界面编程、c语言控制台编程、常用的c语言编程软件、常用c语言编程软件、c语言控制台好看界面,以便于您获取更多的相关知识。

时间: 2024-09-13 16:55:39

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语言控制台窗口图形界面编程之五 控制文本移动的函数

控制文本的移动是控制台窗口界面编程的一个很重要的功能,有了这个功能我们可以实现界面的滚动.下面我们介绍一个控制文本移动的函数,如下: BOOL ScrollConsoleScreenBuffer( //文本移动函数 HANDLE hConsoleOutput, //句柄 const SMALL_RECT *lpScrollRectangle, //移动区域 const SMALL_RECT *lpClipRectangle, //裁剪区域,如果为NULL,那么将代表整个屏幕缓冲区 COORD d

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

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

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语言控制台窗口图形界面编程之二 用于控制台窗口操作的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