问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言 怎样转界面

发布网友 发布时间:2024-04-28 03:04

我来回答

1个回答

热心网友 时间:2024-07-30 21:56

#include<windows.h>
HANDLE hOut;
void ShadowWindowLine(char *str); // 在具有阴影效果的窗口中显示一行字符,窗口为居中显示
void DrawBox(bool bSingle, SMALL_RECT rc); // 绘制边框
void main()
{
hOut = GetStdHandle(STD_OUTPUT_HANDLE); // 获取标准输出设备句柄
SetConsoleOutputCP(437); // 设置代码页
ShadowWindowLine("Display a line of words, and center the window with shadow.");
CloseHandle(hOut); // 关闭标准输出设备句柄
}

void ShadowWindowLine(char *str)
{
CONSOLE_SCREEN_BUFFER_INFO bInfo; // 窗口缓冲区信息
GetConsoleScreenBufferInfo( hOut, &bInfo ); // 获取窗口缓冲区信息
// 计算显示窗口大小和位置
int x1, y1, x2, y2, chNum = strlen(str);
x1 = (bInfo.dwSize.X - chNum)/2 - 2;
y1 = bInfo.dwSize.Y/2 - 2;
x2 = x1 + chNum + 4;
y2 = y1 + 5;
WORD att1 = BACKGROUND_INTENSITY; // 阴影属性
WORD att0 = FOREGROUND_RED |FOREGROUND_GREEN |FOREGROUND_BLUE | FOREGROUND_INTENSITY |
BACKGROUND_RED | BACKGROUND_BLUE; // 文本属性

WORD attText = FOREGROUND_RED |FOREGROUND_INTENSITY; // 文本属性
// 设置阴影
COORD posShadow = , posText = ;
for (int i=0; i<5; i++)
{
FillConsoleOutputAttribute(hOut, att1, chNum + 4, posShadow, NULL);
posShadow.Y++;
}
// 填充窗口背景
for (i=0; i<5; i++)
{
FillConsoleOutputAttribute(hOut, att0, chNum + 4, posText, NULL);
posText.Y++;
}
// 写文本和边框
posText.X = x1 + 2;
posText.Y = y1 + 2;
WriteConsoleOutputCharacter(hOut, str, strlen(str), posText, NULL);
SMALL_RECT rc = ;
DrawBox(true, rc);
SetConsoleTextAttribute(hOut, bInfo.wAttributes); // 恢复原来的属性
}

void DrawBox(bool bSingle, SMALL_RECT rc)
{
char chBox[6];
if (bSingle)
{
chBox[0] = (char)0xda; // 左上角点
chBox[1] = (char)0xbf; // 右上角点
chBox[2] = (char)0xc0; // 左下角点
chBox[3] = (char)0xd9; // 右下角点
chBox[4] = (char)0xc4; // 水平
chBox[5] = (char)0xb3; // 坚直
}
else
{
chBox[0] = (char)0xc9; // 左上角点
chBox[1] = (char)0xbb; // 右上角点
chBox[2] = (char)0xc8; // 左下角点
chBox[3] = (char)0xbc; // 右下角点
chBox[4] = (char)0xcd; // 水平
chBox[5] = (char)0xba; // 坚直
}
COORD pos = ;
WriteConsoleOutputCharacter(hOut, &chBox[0], 1, pos, NULL);
for (pos.X = rc.Left + 1; pos.X<rc.Right;pos.X++)
WriteConsoleOutputCharacter(hOut, &chBox[4], 1, pos, NULL);
pos.X = rc.Right;
WriteConsoleOutputCharacter(hOut, &chBox[1], 1, pos, NULL);
for (pos.Y = rc.Top+1; pos.Y<rc.Bottom;pos.Y++)
{
pos.X = rc.Left;
WriteConsoleOutputCharacter(hOut, &chBox[5], 1, pos, NULL);
pos.X = rc.Right;
WriteConsoleOutputCharacter(hOut, &chBox[5], 1, pos, NULL);
}
pos.X = rc.Left; pos.Y = rc.Bottom;
WriteConsoleOutputCharacter(hOut, &chBox[2], 1, pos, NULL);
for (pos.X = rc.Left + 1; pos.X<rc.Right;pos.X++)
WriteConsoleOutputCharacter(hOut, &chBox[4], 1, pos, NULL);
pos.X = rc.Right;
WriteConsoleOutputCharacter(hOut, &chBox[3], 1, pos, NULL);
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
脚崴了挂什么科、急急急 linux 解压缩工具--tar命令 生日祝福语闺蜜 简短独特暖心 QQ有哪些隐藏的图标??他们分别是什么??怎么样点亮?? QQ业务的各种图标怎么点亮? qq怎么点亮图标和名字 诗中书万象=求下联 大爱如山藏万象下联 中国电子展:电位器和可调电阻的区别是什么?这四点很明显 电位器的接线方法是什么 电位器的工作原理如何 实验室用C还原CuO,生成的气体通入澄清石灰水中,得到10克白色沉淀,求参... 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 八月十五太原好玩的地方在八月十五太原有什么好玩的地方 判断布伦托海和吉力湖,谁的含盐量更高,并说明高的理由 您的手机号在最近24小时内绑定过三个,已达到限制,...24小时后... 您的手机号在最近24小时内绑定过三个,已达到限制,...24小时后... 为什么一年要人口普查几次?三天两头上门查,而且都不尊重居民隐私的,之 ... ...号在最近24小时内绑定过三个,已达到限制,...24小时后可以再次... ...问题:你的手机号在最近24小时内已绑定过3个,已达到限制?_百度... 手机号1 24 手机号24小时内绑定了两个被限制 请问什么时候才能重 ... 手机号1 24 手机号24小时内绑定了两个被限制 请问什么时候才能重 ... 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 刚出生的孔雀鱼为什么会自己莫名其妙的死掉 改错了未满一年怎么改回来 手机号绑定了达到限制不能绑定其他是什么意思? 如何查询自己的信鸽足环号码? 高中学生社会实践学分认定表中的公章要盖在哪栏 相册后期制作产品对身体有害吗 手机号1 24 手机号24小时内绑定了两个被限制 请问什么时候才能重 ... 手机浏览器UC浏览器和QQ浏览器哪个省流量 ...在50万以上,有流水账单,是否可以办理信用卡 ...号在最近24小时内绑定过三个,已达到限制,...24小时后可以再次... ...问题:你的手机号在最近24小时内已绑定过3个,已达到限制?_百度... 关于微信绑定上限的问题:你的手机号在最近24小时内已绑定过3个... 联想G50-80的i5版和thinkpad的E550哪一个更好啊? 被人骗了,绑定了别的手机号,现在密码也被改了,怎么办? 语文 以孔子巴金仿照写两句话 “鲁迅是寂寞的,在浓黑的悲凉中,在麻木愚... 是QQ浏览器省流量还是uc浏览器省流量啊??? 手机号1 24 手机号24小时内绑定了两个被限制 请问什么时候才能重 ... 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 您的手机号在最近24小时内绑定过三个,已达到限制,...24小时后... 遂道建设的安全环保归那个单位监管 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... ...我鉴定结论不服我能向办案单位申请相省公安厅决定吗? 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 您的手机号在最近24小时内绑定过三个,已达到限制,...24小时后... ...事实结论①将木炭和浓硫酸反应生成的气体通入澄清石灰水中,有... 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信...