MessageBox函数的使用
课堂练习
创建Win32 Application
Win32 Application和Win32 Console Application区别: zhidao.baidu.com/question/12…
编写代码
#include "stdafx.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
int ret = MessageBox(NULL,TEXT("你超过18岁了吗?"),TEXT("提问"),MB_YESNO|MB_ICONQUESTION);
if(IDYES == ret) //变量放右边,常量值放左边
{
MessageBox(NULL, TEXT("你是成年人了"),TEXT("回复"),MB_OK);
}
else
{
MessageBox(NULL, TEXT("你是未成年人"),TEXT("回复"),MB_OK);
}
return 0;
}
注:
Message(NULL, TEXT(""), TEXT(""), ME_YESNO|MB_ICONQUESTION);
正文, 标题, 按钮类型
-
TEXT是宏,建议将所有字符串都用TEXT括起来
-
宏一般都是大写
-
MessageBox的返回值是int类型
设置希望在对话框中显示的按钮
#define MB_OK
0x00000000L (0x是十六进制)
#define MB_OKCANCEL
0x00000001L
#define MB_ABORTRETRYIGNORE
0x00000002L
#define MB_YESNOCANCEL
0x00000003L
#define MB_YESNO
0x00000004L
#define MB_RETRYCANCEL
0x00000005L
设置对话框中显示的图标:
#define MB_ICONHAND
0x00000010L
#define MB_ICONQUESTION
0x00000020L
#define MB_ICONEXCLAMATION
0x00000030L
#define MB_ICONASTERISK
0x00000040L
必备小知识
“|”是什么意思?
*“|”是位运算里的“或”运算,只有对应的**两个二进制位**全为0,结果才为0。
例如:
MB_OK、MB_OKCANCEL 化为二进制 或运算 之后的结果可以看出,他们的低四位和高四位各自保留自己原来的特征
MB_YESNOCANCEL、MB_ICONQUESTION 化为二进制 或运算 之后的结果可以看出,他们的低四位和高四位也各自保留自己原来的特征
这样“MB_OK、MB_OKCANCEL”组的数值与“MB_YESNOCANCEL、MB_ICONQUESTION”组的数值进行或运算后能分别保留各自的部分,也就是在结果值中同时体现两组的取值。所以说按钮和图标可以通过此运算同时出现。
课后作业
运行以后弹出询问对话框(有【是】、【否】两个按钮以及问号图标)“你 是好人吗?”,如果点击【是】,则弹出对话框(只有一个【确定】按钮以及一 个警告图标)“你看你就不像好人,点击【确定】开始格式化 C 盘!”;如果点 击【否】,则弹出对话框(有【重试】、【取消】两个按钮及问号图标)“尝试把你变成好 人失败,是否重试?”。
#include "stdafx.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
int ret = MessageBox(NULL,TEXT("你是好人吗?"),TEXT("询问"),MB_YESNO|MB_ICONQUESTION);
if(IDYES == ret)
{
MessageBox(NULL,TEXT("你看你就不像好人,点击【确定】开始格式化 C 盘"),TEXT("回答"),MB_OK|MB_ICONWARNING);
}
else
{
int ret1 = MessageBox(NULL,TEXT("尝试把你变成好人失败,是否重试?"),TEXT("挽救你"), MB_RETRYCANCEL|MB_ICONQUESTION);
if(IDRETRY == ret1)
{
MessageBox(NULL, TEXT("坏人就是换人,没法变成好人"), TEXT("没戏喽"), MB_OK|MB_ICONERROR);
} //还可以自行添加代码段
}
return 0;
}
注:
-
EXCLAMATION 或者 WARNING: 警告⚠
-
HAND: 错误提示❌
-
ASTERISK: 星号,提示
附:代码整理快捷键
TAB: 向后缩进
SHIFT+TAB: 向前缩进