📄 message.c
字号:
#include "message.h"
/*
char *str="马勒戈壁的草泥马正在吃卧草。马勒戈壁的草泥马正在吃卧草。卧草,卧草,卧草泥马!泥马。泥马,泥马卧草。草泥马快乐的吃卧草,卧草快乐的被草泥马吃!";
int main()
{
initscr();
if(has_colors==FALSE)
{
endwin();
exit(0);
}
start_color();
WINDOW *window=subwin(stdscr,25,80,0,0);
messagebox(window,7,19,44,12,COLOR_BLUE,YORNORC,str);
endwin();
return 0;
}
*/
int messagebox(WINDOW *father,int startX,int startY,int lenght,int height,int choice,char *str)
{
WINDOW * win=derwin(father,height,lenght,startX,startY);
WINDOW * shadow=derwin(father,height,lenght,startX+1,startY+1);
scr_dump("scanm.dat");//屏幕保存
int i=0,result=0,sign=1;
/*
init_pair(1,COLOR_BLACK,COLOR_RED);
init_pair(2,COLOR_WHITE,shadowColor);
init_pair(3,COLOR_BLACK,COLOR_BLACK);
init_pair(4,COLOR_BLACK,COLOR_YELLOW);
*/
wbkgd(shadow,COLOR_PAIR(3));
touchwin(father);
wrefresh(father);
wbkgd(win,COLOR_PAIR(1));
box(win,0,0);
mvwprintw(win,0,17,"注");
mvwprintw(win,0,25,"意");
touchwin(father);
wrefresh(father);
printmessage(win,40,str,2,2);
switch(choice)
{
BUTTON *b1;
BUTTON *b2;
BUTTON *b3;
case PAUSE:
b1=createButton(startX+height/2,startY+lenght/2-3,3,8,"确定");
b1->setColor(b1,1,3,4);
b1->show(b1);
b1->pitch_on(b1);
b1->attack(b1,0,0,0);
b1->setColor(b1,1,3,4);
b1->free(&b1);
break;
case YORN:
b1=createButton(startX+height/2,startY+lenght/2-8,3,8,"确定");
b1->setColor(b1,1,3,4);
b1->show(b1);
b2=createButton(startX+height/2,startY+lenght/2+2,3,8,"取消");
b2->setColor(b2,1,3,4);
b2->show(b2);
do
{
switch (sign)
{
case 1:
b1->pitch_on(b1);
sign=b1->attack(b1,2,2,2);
b1->setColor(b1,1,3,4);
if(sign == 0)
{
result=1;
}
break;
case 2:
b2->pitch_on(b2);
sign=b2->attack(b2,1,1,1);
b2->setColor(b2,1,3,4);
if(sign == 0)
{
result=0;
}
break;
}
}
while (sign);
break;
case YORNORC:
b1=createButton(startX+height/2,startY+lenght/2-14,3,8,"是的");
b1->setColor(b1,1,3,4);
b1->show(b1);
b2=createButton(startX+height/2,startY+lenght/2-4,3,8,"不用");
b2->setColor(b2,1,3,4);
b2->show(b2);
b3=createButton(startX+height/2,startY+lenght/2+6,3,8,"取消");
b3->setColor(b3,1,3,4);
b3->show(b3);
do
{
switch (sign)
{
case 1:
b1->pitch_on(b1);
sign=b1->attack(b1,3,2,2);
b1->setColor(b1,1,3,4);
if(sign == 0)
{
result=1;
}
break;
case 2:
b2->pitch_on(b2);
sign=b2->attack(b2,1,3,3);
b2->setColor(b2,1,3,4);
if(sign == 0)
{
result=0;
}
break;
case 3:
b3->pitch_on(b3);
sign=b3->attack(b3,2,1,1);
b3->setColor(b3,1,3,4);
if(sign == 0)
{
result=2;
}
break;
}
}
while (sign);
break;
}
/*
attroff(COLOR_PAIR(1));
attroff(COLOR_PAIR(2));
attroff(COLOR_PAIR(3));*/
scr_restore("scanm.dat");//屏幕恢复
return result;
}
void printmessage(WINDOW *window,int maxprintlen,char *str,int startX,int startY)
{
int high=0,len=0,i=0,j=0;
len=strlen(str);
if(len<=maxprintlen)
{
mvwprintw(window,startX,startY+(maxprintlen-len)/2,"%s",str);
}else
{
if(len%maxprintlen==0)
{
high=len/maxprintlen;
}else
{
high=len/maxprintlen+1;
}
for(i=0;i<high;i++)
{
for(j=0;j<maxprintlen;j++)
{
if(i==high-1)
{
mvwprintw(window,startX+i,startY+(maxprintlen-(len-i*maxprintlen))/2+j,"%s",(str+i*maxprintlen+j));
break;
}else
{
mvwprintw(window,startX+i,startY+j,"%c",*(str+i*maxprintlen+j));
}
}
}
}
touchwin(window);
wrefresh(window);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -