问题标题: 酷町堂:如何自定义选项按钮

1
3
已解决
陈曦
陈曦
资深天翼
资深天翼

MessageBox(NULL,"   ","   ",MB_OK);

怎么控制选项?如选项 A、B、C 

就是比如点 A 就执行一段代码

就是比如点 B 就执行另一段代码

 

陈曦在2020-04-19 12:09:46追加了内容

是在对话框里做选择题 @侯平仄 

陈曦在2020-04-19 16:35:02追加了内容

@刘欣然 你是怎么做到的?

陈曦在2020-04-20 09:27:18追加了内容

加点悬赏吧!

陈曦在2020-04-22 14:36:06追加了内容

额~~这问题是不是有点难了?


1
已采纳
李致远
李致远
高级光能
高级光能

我知道!

比如说你有YES和NO这两个选项

那么如果你要别人按YES则输出“好的”的话

int a=MessageBox(NULL,"   ","   ",MB_YESNO)

if(a==IDYES){//也就是说在前面必须加一个ID

cout<<"好的";

}

如果你要别人按NO则输出“OK”的话

if(a==IDNO){//在前面必须加一个ID

cout<<"OK";

}

以此类推,还有就是选项不能自己控制(只能有那么几个YESNO之类的

望采纳,谢谢(2020 4 19日,防抄袭)

李致远在2020-04-19 13:19:06追加了内容

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<string>
#include<iomanip>
#include<windows.h>
#define zhen int
#define ru cin
#define chu cout
#define chang long long
#define huan while
#define dapo break
#define qiantu continue
using namespace std;
int main(){
    int a=MessageBox(NULL,"Tips 第一次加载时间可能会很长,请耐心等待","????",MB_YESNO);
    if(a==IDYES){
        cout<<"感谢您的理解"; 
    }
    else{
        cout<<"好哒,我们会改进哒";
    }
    MessageBox(NULL,"加载完毕,进入游戏","????",MB_OK);
    cout<<"欢迎来到游戏“????”"<<endl<<endl; 
    int b=MessageBox(NULL,"请选择您的职业:1(选是) 将军 2(选否) 军阀","????",MB_YESNO);
    if(b==IDYES){
        cout<<"好哒"<<endl<<"开始游戏"<<endl;
        int c=MessageBox(NULL,"请选择您的士兵:1(选是) 步兵 2(选否) 骑兵","????",MB_YESNO);
        if(c==IDYES){
            cout<<"好哒"; 
    }
    else{
        cout<<"您未开通VIP";
    }
    return 0;
}//您运行一下,应该就是您想要的结果(此代码仅为模板)

1
侯平仄
侯平仄
新手天翼
新手天翼

MB_OK:默认值。有一个确认按钮在里面。
MB_YESNO:有是和否在里面。
MB_ABORTRETRYIGNORE:有Abort(放弃),Retry(重试)和Ignore(跳过)
MB_YESNOCANCEL:消息框含有三个按钮:Yes,No和Cancel
MB_RETRYCANCEL:有Retry(重试)和Cancel(取消)
MB_OKCANCEL:消息框含有两个按钮:OK和Cancel

1
陈喆鹏
陈喆鹏
资深光能
资深光能

你知道这个干啥,编游戏吗

我只知道这个可以打开窗口,你去搜一搜,我游戏中大部分函数都是从百度上搜的

1
刘欣然
刘欣然
高级光能
高级光能

是不是这样

刘欣然在2020-04-19 20:37:18追加了内容

我只是问问,当然,我可以教你如何P图[滑稽保命]

刘欣然在2020-04-19 20:38:56追加了内容

我不想引战

1
侯平仄
侯平仄
新手天翼
新手天翼

补充一下李致远的问答:

MessageBox(NULL,"   ","   ",MB_YESNO)

MB_YESNO也可以:

MB_OK:默认值。有一个确认按钮在里面。
MB_ABORTRETRYIGNORE:有Abort(放弃),Retry(重试)和Ignore(跳过)
MB_YESNOCANCEL:消息框含有三个按钮:Yes,No和Cancel
MB_RETRYCANCEL:有Retry(重试)和Cancel(取消)
MB_OKCANCEL:消息框含有两个按钮:OK和Cancel

1
吴君昊
吴君昊
新手光能
新手光能

你好像可以问下李致远,他知道的多,要不然就问度娘

1
刘景程
刘景程
新手光能
新手光能

我现在在写聊天软件,需要这个功能,在这里讲解一下。

是这样一个函数:MessageBox(NULL,str1,str2,MB_)

那个NULL是句柄,对你们来说没用,略去

(其实这个挺腻害的,就像是消息框所拥有窗口的名字)

str1是窗口的内容,str2是窗口的标题。

图像

这是后面的MB_属性取MB_OK的时候。

如果你按下了“确定”,就会返回1

还有一种MB_取MB_YESNO,就像这个:

MessageBox(NULL,"这是内容","这是标题",MB_YESNO);

图片:

这样来获取返回值:

int rtn=MessageBox(NULL,"这是内容","这是标题",MB_YESNO);
/*这是获取返回值*/
if(rtn==6)cout<<"你选择了是";//根据返回值操作
if(rtn==7)cout<<"你选择了否"; 

动图:

MB_取其它值可以自行百度,获取返回值的方法如上,不再赘述。

附上一个非常好玩的东东(坑人必备~)

#include<bits/stdc++.h>
#include<windows.h> 
using namespace std;
string talk[6]={
	"你怎么可能不是猪?你到底是不是猪?",
	"你唬鬼呢。我再问你一遍!",
	"好了别骗人了。你是不是猪?",
	"啊啊啊你到底是不是?",
	"乖,别闹了,你是不是猪呀?",
	"你继续吹,我听着呢。"
}; 
int main()
{
	srand(time(NULL));
	int a=MessageBox(NULL,"你是不是猪?","让我来我问问你",MB_YESNO);
	while(a==7)
	{
		a=MessageBox(NULL,talk[rand()%6].c_str(),"让我来我问问你",MB_YESNO);
	}
	MessageBox(NULL,"你终于承认了。哈哈哈!","猪!",MB_OK);
}

自行编译,绝无关机代码~

刘景程在2020-04-20 09:09:27追加了内容

再说一下,其实选项是可以控制的,但是需要用到VC和windows编程,但如果花在上面的时间太多了不利于学习,珍重!

刘景程在2020-04-20 10:42:47追加了内容

会一点点吧。但我是用VB的,好久没用了,全忘光了。

(其实我还是比较喜欢Python)

1
刘欣然
刘欣然
高级光能
高级光能

你直接这样不就完了嘛

MessageBox(NULL,"看什么看,没见过标题啊?!","要不要采纳刘欣然?[必须采纳请选是,不可能采纳请选否]",MB_YESNO);

 

刘欣然在2020-04-20 09:34:14追加了内容

不好意思,打反啦

1
朱瑾文
朱瑾文
新手光能
新手光能
#define MB_USERICON 128//确认
#define MB_ICONASTERISK 64//注意 
#define MB_ICONEXCLAMATION 0x30//警告 
#define MB_ICONWARNING 0x30//注意 
#define MB_ICONERROR 16//警告
#define MB_ICONHAND 16//警告
#define MB_ICONQUESTION 32//疑问 
#define MB_OK 0//OK 
#define MB_ABORTRETRYIGNORE 2//终止 测试 忽略 
#define MB_APPLMODAL 0//确认
#define MB_DEFAULT_DESKTOP_ONLY 0x20000//确认
#define MB_HELP 0x4000//确认 帮助 
#define MB_RIGHT 0x80000//内容右对齐 确认
#define MB_RTLREADING 0x100000//标题右对齐 确认
#define MB_TOPMOST 0x40000//确认
#define MB_DEFBUTTON1 0//确认
#define MB_DEFBUTTON2 256//确认
#define MB_DEFBUTTON3 512//确认
#define MB_DEFBUTTON4 0x300//确认
#define MB_ICONINFORMATION 64//注意 
#define MB_ICONSTOP 16//警告
#define MB_OKCANCEL 1//确认 取消 
#define MB_RETRYCANCEL 5//重试 取消
#define MB_SERVICE_NOTIFICATION 0x00200000//确认
#define MB_SERVICE_NOTIFICATION 0x00040000//确认
#define MB_SERVICE_NOTIFICATION_NT3X 0x00040000//确认
#define MB_SETFOREGROUND 0x10000//
#define MB_SYSTEMMODAL 4096//
#define MB_TASKMODAL 0x2000//
#define MB_YESNO 4//
#define MB_YESNOCANCEL 3//
#define MB_ICONMASK 240//
#define MB_DEFMASK 3840//
#define MB_MODEMASK 0x00003000//
#define MB_MISCMASK 0x0000C000//
#define MB_NOFOCUS 0x00008000//
#define MB_TYPEMASK 15//
#define MB_TOPMOST 0x40000//
#define MB_CANCELTRYCONTINUE 6//

你可以试一试

1
沈峻宇
沈峻宇
资深天翼
资深天翼

MB_OK:只有一个确认按钮在里面。
MB_ABORTRETRYIGNORE:有Abort放弃,还有Retry重试和Ignore跳过
MB_YESNOCANCEL:消息框含有三个按钮:Yes同意,No不和Cancel取消
MB_OKCANCEL:消息框含有两个按钮:OK好和Cancel取消

我知道这么多!

望采纳    Hope to adopt   採用を望む(分别是中文,英文,日语)

0
我要回答