专栏文章

弹窗模拟器

休闲·娱乐参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@min9o1ff
此快照首次捕获于
2025/12/01 22:50
3 个月前
此快照最后确认于
2025/12/01 22:50
3 个月前
查看原文
注意:\color{red}注意:
  • 开源类型:MIT (可以二次开发,但需要保留原作者声明)
CPP
//弹窗模拟器 v3.1.3
#define maxneirong 10000000
#define maxbiaoti 10000000
#include<bits/stdc++.h>
#define banben "v3.1.3"
#include<windows.h>
#include<conio.h>
using namespace std;
int anniu1,anniu2,anniushuliang,tubiao,morenanniu,moshi,duiqi,youwangzuo;
char neirong[maxneirong],biaoti[maxbiaoti];
char x;
void MINIMIZEWindow(int x);
void home();
void game();
void copy();
void help();
void day();
int main()
{
	system("title 弹窗模拟器 "banben);
	printf("正在加载中,请耐心等待...");
	MINIMIZEWindow(0);
	MessageBox(NULL,"欢迎来到 弹窗模拟器 "banben,"程序员",4160);
	MINIMIZEWindow(1);
	while(1)
	{
		home();
		if(x=='1')
			game();
		else if(x=='2')
			copy();
		else if(x=='3')
			help();
		else if(x=='4')
			day();
	}
}
void MINIMIZEWindow(int x)
{
    HWND hwnd=GetConsoleWindow();
 	if(x==0)
    	ShowWindow(hwnd, SW_MINIMIZE);
    if(x==1)
    	ShowWindow(hwnd, SW_RESTORE);
    return;
}
void game()
{
	system("cls");
	printf("不准瞎输入!\n");
	Sleep(2000);
	anniu1goto:;
	system("cls");
	printf("\
请输入消息框的按钮样式:\n\
0.确定\n\
1.确定、取消\n\
2.中止、重试、忽略(关闭键失效)\n\
3.是、否、取消\n\
4.是、否(关闭键失效)\n\
5.重试、取消\n\
6.取消、重试、继续\n\
");
	scanf("%d",&anniu1);
	getchar();
	system("cls");
	if(!(anniu1==0||anniu1==1||anniu1==2||anniu1==3||anniu1==4||anniu1==5||anniu1==6))
	{
		MessageBox(NULL,"输入数据错误,请重新输入!","程序员",4112);
		printf("输入数据错误,请重新输入!\n"); 
		Sleep(2000);
		system("cls");
		goto anniu1goto;
	}
	if(anniu1==0)
		anniushuliang=1;
	else if(anniu1==1||anniu1==4||anniu1==5)
		anniushuliang=2;
	else if(anniu1==2||anniu1==3||anniu1==6)
		anniushuliang=3;
	anniu2goto:;
	printf("\
是否添加“帮助”按钮:\n\
0.不添加\n\
16384.添加\n\
");
	scanf("%d",&anniu2);
	getchar();
	system("cls");
	if(!(anniu2==0||anniu2==16384))
	{
		MessageBox(NULL,"输入数据错误,请重新输入!","程序员",4112);
		printf("输入数据错误,请重新输入!\n");
		Sleep(2000);
		system("cls");
		goto anniu2goto;
	}
	if(anniu2==16384)
		anniushuliang++;
	tubiaogoto:;
	system("cls");
	printf("\
请输入消息框的图标样式:\n\
0.无\n\
16.红叉\n\
32.问号\n\
48.警告\n\
64.提示\n\
");
	scanf("%d",&tubiao);
	getchar();
	system("cls");
	if(!(tubiao==0||tubiao==16||tubiao==32||tubiao==48||tubiao==64))
	{
		MessageBox(NULL,"输入数据错误,请重新输入!","程序员",4112);
		printf("输入数据错误,请重新输入!\n"); 
		Sleep(2000);
		system("cls");
		goto tubiaogoto;
	}
	morenanniugoto:;
	system("cls");
	if(anniushuliang==1)
	{
		printf("\
请输入消息框的默认按钮:\n\
0.第一个按钮\n\
");
		scanf("%d",&morenanniu);
		getchar();
		system("cls");
		if(!(morenanniu==0))
		{
			MessageBox(NULL,"输入数据错误,请重新输入!","程序员",4112);
			printf("输入数据错误,请重新输入!\n"); 
			Sleep(2000);
			system("cls");
			goto morenanniugoto;
		}
	}
	if(anniushuliang==2)
	{
		printf("\
请输入消息框的默认按钮:\n\
0.第一个按钮\n\
256.第二个按钮\n\
");
		scanf("%d",&morenanniu);
		getchar();
		system("cls");
		if(!(morenanniu==0||morenanniu==256))
		{
			MessageBox(NULL,"输入数据错误,请重新输入!","程序员",4112);
			printf("输入数据错误,请重新输入!\n"); 
			Sleep(2000);
			system("cls");
			goto morenanniugoto;
		}
	}
	if(anniushuliang==3)
	{
		printf("\
请输入消息框的默认按钮:\n\
0.第一个按钮\n\
256.第二个按钮\n\
512.第三个按钮\n\
");
		scanf("%d",&morenanniu);
		getchar();
		system("cls");
		if(!(morenanniu==0||morenanniu==256||morenanniu==512))
		{
			MessageBox(NULL,"输入数据错误,请重新输入!","程序员",4112);
			printf("输入数据错误,请重新输入!\n"); 
			Sleep(2000);
			system("cls");
			goto morenanniugoto;
		}
	}
	if(anniushuliang==4)
	{
		printf("\
请输入消息框的默认按钮:\n\
0.第一个按钮\n\
256.第二个按钮\n\
512.第三个按钮\n\
768.第四个按钮\n\
");
		scanf("%d",&morenanniu);
		getchar();
		system("cls");
		if(!(morenanniu==0||morenanniu==256||morenanniu==512||morenanniu==768))
		{
			MessageBox(NULL,"输入数据错误,请重新输入!","程序员",4112);
			printf("输入数据错误,请重新输入!\n"); 
			Sleep(2000);
			system("cls");
			goto morenanniugoto;
		}
	}
	moshigoto:;
	system("cls");
	printf("\
请输入消息框模式:\n\
0.应用程序模式;用户在继续在当前应用程序中工作前必须响应消息框。\n\
4096.系统模式;在用户响应消息框前,所有应用程序都挂起。\n\
65536.将消息框窗口指定为前景窗口。\n\
");
	scanf("%d",&moshi);
	getchar();
	system("cls");
	if(!(moshi==0||moshi==4096||moshi==65536))
	{
		MessageBox(NULL,"输入数据错误,请重新输入!","程序员",4112);
		printf("输入数据错误,请重新输入!\n");
		Sleep(2000);
		system("cls");
		goto moshigoto;
	}
	duiqigoto:;
	system("cls");
	printf("\
是否文本右对齐:\n\
0.文本左对齐。\n\
524288.文本右对齐。\n\
");
	scanf("%d",&duiqi);
	getchar();
	system("cls");
	if(!(duiqi==0||duiqi==524288))
	{
		MessageBox(NULL,"输入数据错误,请重新输入!","程序员",4112);
		printf("输入数据错误,请重新输入!\n");
		Sleep(2000);
		system("cls");
		goto duiqigoto;
	}
	youwangzuogoto:;
	system("cls");
	printf("\
是否让窗口从右到左显示:\n\
0.窗口从左到右显示。\n\
1048576.窗口从右到左显示。\n\
");
	scanf("%d",&youwangzuo);
	getchar();
	system("cls");
	if(!(youwangzuo==0||youwangzuo==1048576))
	{
		MessageBox(NULL,"输入数据错误,请重新输入!","程序员",4112);
		printf("输入数据错误,请重新输入!\n");
		Sleep(2000);
		system("cls");
		goto youwangzuogoto;
	}
	system("cls");
	printf("请输入消息框的标题((Enter)为结束):\n");
	for(int i=0;i<maxbiaoti;i++)
	{
		scanf("%c",&x);
		if(x=='\n')
		{
			biaoti[i]='\0';
			break;
		}
		biaoti[i]=x;
	}
	system("cls");
	printf("请输入消息框的内容((Enter),(Ctrl+Z),(Enter)为结束(依次按下)):\n");
	for(int i=0;i<=maxneirong;i++)
	{
		char l=x;
		if(scanf("%c",&x)==EOF)
		{
			neirong[i-1]='\0';
			break;
		}
		if(i-1>=0)
			neirong[i-1]=l;
	}
	system("cls");
	MINIMIZEWindow(0); 
	MessageBox(NULL,neirong,biaoti,anniu1|anniu2|tubiao|morenanniu|moshi|duiqi|youwangzuo);
	MINIMIZEWindow(1); 
	system("cls");
	return;
}
void copy()
{
	system("cls");
	printf("欢迎进入程序模式!\n");
	Sleep(2000);
	system("cls");
	printf("\
请输入消息框的按钮样式:\n\
0.确定\n\
1.确定、取消\n\
2.中止、重试、忽略(关闭键失效)\n\
3.是、否、取消\n\
4.是、否(关闭键失效)\n\
5.重试、取消\n\
6.取消、重试、继续\n\
");
	scanf("%d",&anniu1);
	getchar();
	system("cls");
	printf("\
是否添加“帮助”按钮:\n\
0.不添加\n\
16384.添加\n\
");
	scanf("%d",&anniu2);
	getchar();
	system("cls");
	printf("\
请输入消息框的图标样式:\n\
0.无\n\
16.红叉\n\
32.问号\n\
48.警告\n\
64.提示\n\
");
	scanf("%d",&tubiao);
	getchar();
	system("cls");
	printf("\
请输入消息框的默认按钮:\n\
0.第一个按钮\n\
256.第二个按钮\n\
512.第三个按钮\n\
768.第四个按钮\n\
");
	scanf("%d",&morenanniu);
	getchar();
	system("cls");
	printf("\
请输入消息框模式:\n\
0.应用程序模式;用户在继续在当前应用程序中工作前必须响应消息框。\n\
4096.系统模式;在用户响应消息框前,所有应用程序都挂起。\n\
65536.将消息框窗口指定为前景窗口。\n\
");
	scanf("%d",&moshi);
	getchar();
	system("cls");
	printf("\
是否文本右对齐:\n\
0.文本左对齐。\n\
524288.文本右对齐。\n\
");
	scanf("%d",&duiqi);
	getchar();
	system("cls");
	printf("\
是否让窗口从右到左显示:\n\
0.窗口从左到右显示。\n\
1048576.窗口从右到左显示。\n\
");
	scanf("%d",&youwangzuo);
	getchar();
	system("cls");
	printf("请输入消息框的标题((Enter)为结束):\n");
	for(int i=0;i<maxbiaoti;i++)
	{
		scanf("%c",&x);
		if(x=='\n')
		{
			biaoti[i]='\0'; 
			break;
		}
		biaoti[i]=x;
	}
	system("cls");
	printf("请输入消息框的内容((Enter),(Ctrl+Z),(Enter)为结束(依次按下)):\n");
	for(int i=0;i<=maxneirong;i++)
	{
		char l=x;
		if(scanf("%c",&x)==EOF)
		{
			neirong[i-1]='\0';
			break;
		}
		if(i-1>=0)
			neirong[i-1]=l;
	}
	system("cls");
	MINIMIZEWindow(0); 
	bool wfcj= MessageBox(NULL,neirong,biaoti,anniu1|anniu2|tubiao|morenanniu|moshi|duiqi|youwangzuo);
	if(!wfcj)
	{
		HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    	SetConsoleTextAttribute(hConsole, FOREGROUND_RED);
		printf("警告:此代码无法创建弹窗!\n");
		SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
	}
	MINIMIZEWindow(1); 
	printf("代码:\n    MessageBox(NULL,\"");
	for(int i=0;i<strlen(neirong);i++)
	{
		if(neirong[i]=='\n')
			printf("\\n");
		else if(neirong[i]=='\t')
			printf("\\t");
		else
			printf("%c",neirong[i]);
	}
	printf("\",\"");
	for(int i=0;i<strlen(biaoti);i++)
	{
		if(biaoti[i]=='\n')
			printf("\\n");
		else if(biaoti[i]=='\t')
			printf("\\t");
		else
			printf("%c",biaoti[i]);
	}
	printf("\
\",%d);\n\
\n\
\n\
",anniu1|anniu2|tubiao|morenanniu|moshi|duiqi|youwangzuo);
	printf("\
本次弹窗有以下几种返回值:\n\
\n\
");
	if(wfcj)
	{
		if(anniu1==0||anniu1==1)
			printf("“确定”键——返回值为1\n\n");
		if(anniu1==1||anniu1==3||anniu1==5||anniu1==6)
			printf("“取消”键——返回值为2\n\n");
		if(anniu1==2)
			printf("“终止”键——返回值为3\n\n");
		if(anniu1==2||anniu1==5||anniu1==6)
			printf("“重试”键——返回值为4\n\n");
		if(anniu1==2)
			printf("“忽略”键——返回值为5\n\n");
		if(anniu1==3||anniu1==4)
			printf("“是”键——返回值为6\n\n");
		if(anniu1==3||anniu1==4)
			printf("“否”键——返回值为7\n\n");
		if(anniu1==0||anniu1==1||anniu1==3||anniu1==5||anniu1==6)
			printf("“×”键——返回值为8\n\n");
		if(anniu1==6)
			printf("“继续”键——返回值为11\n\n");
	}
	else
		printf("返回值为0\n\n");
	printf("\
\n\
按任意键返回主界面\n\
\n\
\n\
");
	getch(); 
	system("cls");
	return;
}
void help()
{
	system("cls");
	printf("\
标题可以带字母、数字、空格(' ')和特殊符号(不包括(Ctrl+Z)和(Enter))\n\
内容可以带字母、数字、空格(' ')和特殊符号(不包括(Ctrl+Z))\n\
\n\
特别强调!!!\n\
如果程序出错请按(Ctrl+C)或(Alt+F4)强制终止程序!!!\n\
如果电脑出事,后果自负!!!\n\
\n\
\n\
按任意键返回主界面\n\
\n\
\n\
");
	getch();
	system("cls");
	return;
}
void day()
{
	system("cls");
	printf("\
sun_and_moon制作\n\
\n\
\n\
2025.03.04  v.1.0.0  完成基本的创建指定消息框\n\
\n\
2025.03.31  v.2.0.0  完成一次大更新\n\
\n\
2025.04.02  v.2.1.0  新增程序员模式\n\
\n\
2025.04.06  v.2.2.0  更新代码,修复已知BUG\n\
\n\
2025.04.07  v.3.0.0  新增消息框样式选项,重构代码\n\
\n\
2025.04.11  v.3.1.0  完成一次小更新,修复已知BUG\n\
\n\
2025.04.12  v.3.1.1  修复已知BUG\n\
\n\
2025.11.05  v.3.1.2  新增弹窗返回值提示\n\
\n\
2025.11.12  v.3.1.3  修复已知问题\n\
\n\
\n\
按任意键返回主界面\n\
\n\
\n\
");
	getch();
	system("cls");
	return;
}
void home()
{
	system("cls");
	printf("\
欢迎来到 弹窗模拟器 "banben"\n\
\n\
\n\
1.开始模拟     2.程序模式\n\
3.操作须知     4.更新日志\n\
\n\
");
	x=getch();
	system("cls");
	return;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...