浅谈MessageBox函数

· · 个人记录

在程序进行的过程中,程序时常需要向用户返回一些消息,于是就产生了——

MessageBox函数

使用的例子:

#include <windows.h>
using namespace std;
int main()
{
    MessageBox(NULL,"This is a Message Box","TEST",MB_ICONINFORMATION|MB_OK);
    return 0;
}

运行结果:

参数说明:

MessageBox函数有四个参数,第一个表示这个消息框是否拥有窗口,一般我们用NULL表示它不拥有窗口。

第二个参数可以看做是一个字符串,是消息框的内容。

第三个参数仍然可以看做是一个字符串,是消息框的标题。

第四个参数设置消息框的标志与按钮,常用的如下:

标志:
MB_OK:默认值。有一个确认按钮在里面。
MB_YESNO:有是和否在里面。
MB_ABORTRETRYIGNORE:有Abort(放弃),Retry(重试)和Ignore(跳过)
MB_YESNOCANCEL:消息框含有三个按钮:Yes,No和Cancel
MB_RETRYCANCEL:有Retry(重试)和Cancel(取消)
MB_OKCANCEL:消息框含有两个按钮:OK和Cancel
按钮:
MB_ICONEXCLAMATION:一个惊叹号出现在消息框
MB_ICONWARNING:一个惊叹号出现在消息框
MB_ICONINFORMATION:一个圆圈中小写字母i组成的图标出现在消息框
MB_ICONASTERISK:一个圆圈中小写字母i组成的图标出现在消息框
MB_ICONQUESTION:一个问题标记图标出现在消息框
MB_ICONSTOP:一个停止消息图标出现在消息框
MB_ICONERROR:一个停止消息图标出现在消息框
MB_ICONHAND:一个停止消息图标出现在消息框

如果需要同时设置标志与按钮,两个参数之间用按位或(|)隔开

特殊参数

有时MessageBox函数的第二、三参数仅仅使用字符串难以满足我们的要求,这时我们可以这样来写:

#include <windows.h>
#include <iostream>
using namespace std;
TCHAR TextBuf[1001];//Windows字符型变量数组 
int main()
{
    int n;
    cin>>n;
    wsprintf(TextBuf,TEXT("你输入了%d"),n);//将内容写入数组,数组名后的参数类似于printf 
    MessageBox(NULL,TextBuf,"TEST",MB_ICONINFORMATION|MB_OK);//将数组作为参数传入 
    return 0;
}

运行结果

函数返回值

其实MessageBox函数是有返回值的,类型为int,表示用户选择的按钮

举个栗子:

#include <windows.h>
#include <iostream>
using namespace std;
int main()
{
    int ch1=MessageBox(NULL,"HAHAGAGA","TEST",MB_ICONINFORMATION|MB_YESNOCANCEL);
    int ch2=MessageBox(NULL,"HAHAGAGA","TEST",MB_ICONINFORMATION|MB_YESNOCANCEL);
    int ch3=MessageBox(NULL,"HAHAGAGA","TEST",MB_ICONINFORMATION|MB_YESNOCANCEL);
    int ch4=MessageBox(NULL,"HAHAGAGA","TEST",MB_ICONINFORMATION|MB_YESNOCANCEL);
    cout<<ch1<<" "<<ch2<<" "<<ch3<<" "<<ch4;
    return 0;
}

四个窗口,分别选择“YES”、“NO”、“CANCEL”与直接叉掉,输出值如下:

不同的按键有不同的返回值,常用的如下:

IDABORT:Abort 按钮被选中。
IDCANCEL:Cancel按钮被选中。
IDIGNORE:Ignore按钮被选中。
IDNO:NO按钮被选中。
IDOK:OK按钮被选中。
IDRETRY:RETRY按钮被选中。
IDYES:YES按钮被选中。