前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MessageBox

MessageBox

作者头像
繁依Fanyi
发布2023-05-07 16:44:27
4080
发布2023-05-07 16:44:27
举报

MessageBox

  • MessageBox指的是显示一个模态对话框,其中包含一个系统图标、 一组按钮和一个简短的特定于应用程序消息,如状态或错误的信息。消息框中返回一个整数值,该值指示用户单击了哪个按钮。

函数

函数原型
代码语言:javascript
复制
//一般形式

int WINAPI MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType);
代码语言:javascript
复制
//其实它是根据Unicode定义的
 
 
 
WINUSERAPI int WINAPI MessageBoxA(
 
HWND hWnd,
 
LPCSTR lpText,
 
LPCSTR lpCaption,
 
UINT uType);
 
 
WINUSERAPI int WINAPI MessageBoxW(
 
HWND hWnd,
 
LPCWSTR lpText,
 
LPCWSTR lpCaption,
 
UINT uType);
 
 
#ifdef UNICODE
 
#define MessageBox MessageBoxW   //如果启用Unicode库,就用MessageBoxW
 
#else
 
#define MessageBox MessageBoxA   //否则,就用MessageBoxA
 
#endif
参数
  • hWnd :  此参数代表消息框拥有的窗口。如果为NULL,则消息框没有拥有窗口。
  • lpText :  消息框的内容。如果使用了Unicode库,则把文本变成:
代码语言:javascript
复制
  TEXT(/*sometext*/)
  • lpCaption :  消息框的标题。如果使用Unico库,则把文本变成:
代码语言:javascript
复制
  TEXT(/*sometext*/)
  • uType :  指定一个决定对话框的内容和行为的位标志集。此参数可以为下列标志组中标志的组合。指定下列标志中的一个来显示消息框中的按钮以及图标。
uType参数
  • 按钮

按钮参数

含义

MB_OK

默认值。有一个确认按钮在里面。

MB_YESNO

有是和否在里面。

MB_ABORTRETRYIGNORE

有Abort(放弃),Retry(重试)和Ignore(跳过)

MB_YESNOCANCEL

消息框含有三个按钮:Yes,No和Cancel

MB_RETRYCANCEL

有Retry(重试)和Cancel(取消)

MB_OKCANCEL

消息框含有两个按钮:OK和Cancel

代码语言:javascript
复制
//按钮
#define MB_OK 0x00000000L
#define MB_OKCANCEL 0x00000001L
#define MB_ABORTRETRYIGNORE 0x00000002L
#define MB_YESNOCANCEL 0x00000003L
#define MB_YESNO 0x00000004L
#define MB_RETRYCANCEL 0x00000005L
  • 图标

参数

含义

MB_ICONEXCLAMATION

一个惊叹号出现在消息框

MB_ICONWARNING

一个惊叹号出现在消息框

MB_ICONINFORMATION

一个圆圈中小写字母i组成的图标出现在消息框

MB_ICONASTERISK

一个圆圈中小写字母i组成的图标出现在消息框

MB_ICONQUESTION

一个问题标记图标出现在消息框

MB_ICONSTOP

一个停止消息图标出现在消息框

MB_ICONERROR

一个停止消息图标出现在消息框

MB_ICONHAND

一个停止消息图标出现在消息框

代码语言:javascript
复制
//图标
#define MB_ICONHAND 0x00000010L
#define MB_ICONQUESTION 0x00000020L
#define MB_ICONEXCLAMATION 0x00000030L
#define MB_ICONASTERISK 0x00000040L
#define MB_USERICON 0x00000080L
  • 形态

参数

含义

MB_APPLMODAL

在hwnd参数标识的窗口中继续工作以前,用户一定响应消息框。

MB_SYSTEMMODAL

用系统模态消息框来改变各种各样的用户。

MB_TASKMODAL

当调用应用程序或库没有一个可以得到的窗口句柄时,使用此标志。

代码语言:javascript
复制
//对话框模型定义
#define MB_APPLMODAL 0x00000000L
#define MB_SYSTEMMODAL 0x00001000L
#define MB_TASKMODAL 0x00002000L
#define MB_HELP 0x00004000L//是否拥有帮助按钮
  • 其他

标志

含义

MB_DEFAULT_DESKTOP_ONLY

接收输入的当前桌面一定是一个缺省桌面。

MB_HELP

把一个Help按钮增加到消息框。

MB_RIGHT

文本为右调整

MB_RTLREADING

用在Hebrew和Arabic系统中从右到左的顺序显示消息和大写文本。

MB_SETFOREGROUND

消息框变为前景窗口。在内部系统为消息个调用SetForegroundWindow函数。

MB_TOPMOST

消息框用WS_EX_TOPMOST窗口类型来创建MB_SERVICE_NOTIFICATION。

代码语言:javascript
复制
//按钮
#define MB_OK 0x00000000L
#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
#define MB_USERICON 0x00000080L
//图标声明
#define MB_ICONWARNINGMB_ICONEXCLAMATION
#define MB_ICONERRORMB_ICONHAND
#define MB_ICONINFORMATIONMB_ICONASTERISK
#define MB_ICONSTOPMB_ICONHAND
//默认按钮声明
#define MB_DEFBUTTON1 0x00000000L
#define MB_DEFBUTTON2 0x00000100L
#define MB_DEFBUTTON3 0x00000200L
#if(WINVER>=0x0400)
#define MB_DEFBUTTON4 0x00000300L   //如果支持第四个MessageBox按钮的话,定义DEFButton4
#endif
//对话框模型定义
#define MB_APPLMODAL 0x00000000L
#define MB_SYSTEMMODAL 0x00001000L
#define MB_TASKMODAL 0x00002000L
#define MB_HELP 0x00004000L   //是否拥有帮助按钮
//特殊声明
#define MB_NOFOCUS 0x00008000L
#define MB_SETFOREGROUND 0x00010000L
#define MB_DEFAULT_DESKTOP_ONLY 0x00020000L
#define MB_TOPMOST 0x00040000L
#define MB_RIGHT 0x00080000L
#define MB_RTLREADING 0x00100000L
返回值

ID

选择了…

IDOK (1)

OK

IDCANCEL (2)

CANCEL

IDABORT (3)

ABORT

IDRETRY (4)

RETRY

IDIGNORE (5)

IGNORE

IDYES (6)

YES

IDNO (7)

NO

实例

代码语言:javascript
复制
#include <windows.h>
//切记!当调用<windows.h>时,不要调用MFC!(Afx.h)
int main()
{
    int result = MessageBox( NULL , TEXT("这是对话框") , TEXT("你好") , MB_ICONINFORMATION|MB_YESNO);
    switch(result)/*注意!使用Unicode应用TEXT包围字串*/
{
    case IDYES:MessageBox(NULL,TEXT("您选择了YES"),TEXT("YES"),MB_OK);break;
    case IDNO:MessageBox(NULL,TEXT("您选择了NO"),TEXT("NO"),MB_OK);break;
}
return 0;
}

1.第一步:弹出对话框。语句:

代码语言:javascript
复制
int result = MessageBox(NULL,TEXT("这是对话框"),TEXT("你好"),MB_ICONINFORMATION|MB_YESNO);
在这里插入图片描述
在这里插入图片描述

2.选择是:语句:

代码语言:javascript
复制
case IDYES:MessageBox(NULL,TEXT("您选择了YES"),TEXT("YES"),MB_OK);break;
在这里插入图片描述
在这里插入图片描述

3.选择否:语句:

代码语言:javascript
复制
case IDNO:MessageBox(NULL,TEXT("您选择了NO"),TEXT("NO"),MB_OK);break;
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MessageBox
    • 函数
      • 函数原型
      • 参数
      • uType参数
      • 返回值
    • 实例
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档