#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 = {x1+1, y1+1}, posText = {x1, y1};
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 = {x1, y1, x2-1, y2-1};
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 = {rc.Left, rc.Top};
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);
}
求高手帮忙如何给一个C语言编写软件的图形界面
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)...
求一个用VC++编写简单的界面的代码
如果去下载一个不需要代码的控件, 我看不如用VB了.计算器的关键就在这个上, 设置函数OnCtrlColor()可以设置不同的颜色, 但你还可以做个类, 或找个类,如btnST之类的按钮类, 它提供比较好的着色方案, 因此就不用自己动手写这个类或写个控件 ...
求C语言高手帮忙分析代码
在提问时,尝试以简洁的语言描述您的问题,同时使用适当的注释或代码注释来说明代码的目的和关键逻辑。这有助于分析者快速定位问题所在,并提供有针对性的解决方案。如果代码较长,分段展示并简要说明每个部分的功能或作用,可以提高问题的可读性和理解性。当您收到回复时,仔细阅读并理解分析者的建议或解决...
求c语言高手给一个用vc++6.0写的 画一个图形(静态、动态都可以或实现某...
不知道你是大几的,有没有学到MFC,是要控制台那种还是要图形界面那种.比如计算器了,简单学生管理 图书管理等等,我这里有几个.
电脑C语言编程,求高手帮忙
1.include<stdio.h> void main(){ int n[8],maxn=0,minn=0,detn;float score[8],max,min,aver=0.0,det,detm;printf("输入裁判号及分数:\\n");scanf("%d%f",&n[0],&score[0]);max=min=score[0];for(int i=1;i<8;i++){ scanf("%d%f",&n[i],&score[i]);if(max<...
寻求编程高手帮忙用VC++编一个简单的图像处理软件!!!
我现在也在做相关的程序,快做好了.如果要简单一点的 使用 picture 控件实现打开文件,放大缩小使用StretchBlt之类的位图相关的函数或者直接使用MoveWindow,灰度的话 我很偷懒,直接使用GetPixel函数 获取RGB值做运算 最后保存对话框里的图像就OK了。希望对你有帮助。
请高手用C语言帮忙做个编程的题目,谢谢了!
int IsDevided(int number,int dev){ if(number %dev == 0){ return 1;} return 0;} void EasyDone(int a){ int chose;int i,j;printf("Input your chose\\n1>能被3整除的"<Enter 1>","\\n2>能被5整除的<Enter 2>","\\n3>能被3或5整除的<Enter 3>\\n");scanf("%d",&chose)...
跪求C语言编程高手帮忙编个小程序,大一年级的
tot=a+b+c+d+e;printf("字符串中共有:%d字符\\n大写字母:%d个\\n小写字母:%d个\\n数字:%d个\\n空格:%d个\\n其他字符:%d\\n",tot,a,b,c,d,e);for(i=0;i<tot-1;i++){ iPos = i;for(j=i+1;j<tot;j++)if(ch[j]<ch[iPos])iPos=j;iTemp = ch[i];ch[i] = ch[...
c++怎么编写一个应用软件
之所以看起来不一样是因为软件中有个名词叫做图形界面开发。在C\/C++中就是包含一定的头文件。比如你要开发一个windows程序,那么头文件windows.h头文件一定包含在内 4.学习编程不要急于求成,打好基础才是关键。虽然现在你面对的是一串串枯燥无聊的数据,但是只要努力,终有一天你会写出漂亮的程序。
求C语言高手帮忙,毕业设计要用到一个公式计算的程序,求救命。谢谢了
可能这个程序是一个工程的一部分,直接拿出来导致有些错误,还有做成可执行文件的需要,我修改了一些代码。不知道能不能满足要求,你先试一下吧,不行的话再做,或者你把你的程序要求发给我,我直接帮你做一个。再提醒一下,好像这个程序只是读取K1,K3,K4的值,K2的值是计算出来的。我的目的不...