手柄?hOut
作廢?ShadowWindowLine(char?* str);?//?在有陰影效果的窗口中顯示壹行字符,窗口顯示在中央。
作廢?DrawBox(bool?單身嗎?小_RECT?RC);?//?畫壹個邊框
作廢?主()
{
豪特?=?GetStdHandle(STD _ OUTPUT _ HANDLE);?//?獲取標準輸出設備句柄。
SetConsoleOutputCP(437);?//?設置代碼頁
ShadowWindowLine("顯示?答?線?的?話,?然後呢。中心?那個?窗戶?用什麽?影子。”);
close handle(hOut);?//?關閉標準輸出設備手柄。
}
作廢?ShadowWindowLine(char?*str)
{
控制臺_屏幕_緩沖區_信息?bInfo?//?窗口緩沖信息
GetConsoleScreenBufferInfo(?豪特?& ampbInfo?);?//?獲取窗口緩沖區信息
//?計算顯示窗口的大小和位置
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;
詞?att1?=?背景_強度;?//?陰影屬性
詞?att0?=?前景_紅色?|前景_綠色?|前景_藍色?|?前景_強度?|?
背景_紅色?|?背景_藍色;?//?文本屬性
詞?attText?=?前景_紅色?|前景_強度;?//?文本屬性
//?設置陰影
坐標?波沙多?=?{x1+1,?y1+1}、?posText?=?{x1,?y 1 };
為了什麽?(int?I = 0;?我& lt5;?i++)
{
FillConsoleOutputAttribute(hOut,att1,?chNum?+?4,?波沙多?NULL);?
波沙多。y++;
}
//?填充窗口背景
為了什麽?(I = 0;?我& lt5;?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);
小_RECT?rc?=?{x1,?y1,?x2-1,?y2-1 };
DrawBox(沒錯,RC);
SetConsoleTextAttribute(hOut,binfo . watt attributes);?//?恢復原始屬性
}
作廢?DrawBox(bool?單身嗎?小_RECT?rc)
{
夏爾?ch box[6];
如果?(bSingle)?
{
chBox[0]?=?(char)0x da;?//?左上角點
chBox[1]?=?(char)0x BF;?//?右上角點
chBox[2]?=?(char)0xc 0;?//?左下角點
chBox[3]?=?(char)0xd 9;?//?右下角點
chBox[4]?=?(char)0x C4;?//?水平
chBox[5]?=?(char)0x B3;?//?健壹
}
其他
{
chBox[0]?=?(char)0xc 9;?//?左上角點
chBox[1]?=?(char)0x bb;?//?右上角點
chBox[2]?=?(char)0x c8;?//?左下角點
chBox[3]?=?(char)0x BC;?//?右下角點
chBox[4]?=?(char)0x CD;?//?水平
chBox[5]?=?(char)0x ba;?//?健壹
}
坐標?pos?=?{rc。左,?rc。top };
WriteConsoleOutputCharacter(hOut,& ampchBox[0],?1,?pos,?NULL);
為了什麽?(位置。x?=?rc。向左?+?1;?位置。X & ltrc。對;位置。X++)
WriteConsoleOutputCharacter(hOut,& ampchBox[4],?1,?pos,?NULL);
位置。x?=?rc。對;
WriteConsoleOutputCharacter(hOut,& ampchBox[1],?1,?pos,?NULL);
為了什麽?(位置。y?=?rc。top+1;?位置。Y & ltrc。底部;位置。Y++)
{
位置。x?=?rc。左;
WriteConsoleOutputCharacter(hOut,& ampchBox[5],?1,?pos,?NULL);
位置。x?=?rc。對;
WriteConsoleOutputCharacter(hOut,& ampchBox[5],?1,?pos,?NULL);
}
位置。x?=?rc。左;?位置。y?=?rc。底部;
WriteConsoleOutputCharacter(hOut,& ampchBox[2],?1,?pos,?NULL);
為了什麽?(位置。x?=?rc。向左?+?1;?位置。X & ltrc。對;位置。X++)
WriteConsoleOutputCharacter(hOut,& ampchBox[4],?1,?pos,?NULL);
位置。x?=?rc。對;
WriteConsoleOutputCharacter(hOut,& ampchBox[3],?1,?pos,?NULL);
}