C语言控制台窗口图形界面编程(四):文本输出
来源:互联网 发布:福建晨曦软件下载 编辑:程序博客网 时间:2024/05/16 06:19
文本颜色属性已经学会了,那么下面就学习几个比较常用的文本输出函数,如下:
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坐标*/
通过以上的文本输出函数,我们来做一个简单的在一个具有阴影效果的窗口显示字符串的示例程序,如下:
#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中编译通过。
1 0
- C语言控制台窗口图形界面编程(四):文本输出
- C语言控制台窗口图形界面编程(三):文本属性
- C语言控制台窗口图形界面编程(五):文本移动
- C语言控制台窗口图形界面编程(
- C语言控制台窗口图形界面编程
- C语言控制台窗口图形界面编程(六):光标操作
- C语言控制台窗口图形界面编程(七):键盘事件
- C语言控制台窗口图形界面编程(八):鼠标事件
- C语言控制台窗口图形界面编程(总结)
- C语言控制台窗口图形界面编程(一):设备句柄与窗口信息
- C语言控制台窗口图形界面编程(二):窗口缓冲区的设置
- C语言图形界面编程
- C语言隐藏控制台窗口
- C#语言 图形界面编程(四) 尺寸、坐标、边界
- [转]C语言图形编程(四) -图形文本
- C语言文本窗口制作
- 图形界面程序使用控制台窗口
- C语言控制台程序窗口隐藏
- 求最大公约数,及最小公倍数。
- C语言标准函数库
- UVa 457 - Linear Cellular Automata
- c++文件操作乱码问题
- Add Two Numbers(LeetCode)
- C语言控制台窗口图形界面编程(四):文本输出
- Cisco 2940交换机电源故障维修
- 怎么做网站推广-网站推广100种方法
- UIRefreshControl iOS6 和 iOS7的风格
- 将对象转换为json字符串
- fedora14 编译arm Linux make menuconfig error处理方法
- SQLServer中数据加密方法
- 阻塞状态的recv返回值
- Java 中的缓存