函数功能

模态对话框,含一个系统图标、 一组按钮和一个简短的消息标签label,返回一个整数值,指示单击了哪个按钮

函数原型

int
WINAPI
MessageBoxA(__in_opt HWND hWnd,__in_opt LPCSTR lpText,__in_opt LPCSTR lpCaption,__in UINT uType);
WINUSERAPI
int
WINAPI
MessageBoxW(__in_opt HWND hWnd,__in_opt LPCWSTR lpText,__in_opt LPCWSTR lpCaption,__in UINT uType);
#ifdef UNICODE
#define MessageBox  MessageBoxW
#else
#define MessageBox  MessageBoxA
#endif // !UNICODE

启用Unicode库,为MessageBoxW,否则为MessageBoxA

参数

hWnd:弹窗父窗口句柄,可为空,如果传入则为对应窗口的阻塞模态
lpText:内容
lpCaption:标题
uType:窗口类型

windows函数api和成员函数中的消息提示框

如果在CWnd的子类中调用MessageBox,MessageBox为成员函数,如果要使用api中函数,加上作用域和头文件#include <windows.h>

例子

//使用成员函数,阻塞当前窗口
MessageBox(_T("你好 世界!"),_T("tip"));
//使用外部函数api,不传窗口句柄,不阻塞当前窗口
::MessageBox(NULL,_T("你好 世界!"),_T("tip"),0);
//使用外部函数api,使用当前窗口句柄,阻塞当前窗口
::MessageBox(m_hWnd,_T("你好 世界!"),_T("tip"),0);

uType参数

按钮

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
一个停止消息图标出现在消息框

形态

MB_APPLMODAL
在hwnd参数标识的窗口中继续工作以前,用户一定响应消息框。但是,用户可以移动到其他线程的窗口且在这些窗口中工作。根据应用程序中窗口的层次机构,用户则以移动到线程内的其他窗口。所有母消息框的子窗口自动地失效,但是弹出窗口不是这样。如果既没有指定MB_SYSTEMMODAL也没有指定MB_TASKMOOAL,则MB_APPLMODAL为缺省的。
MB_SYSTEMMODAL
除了消息框有WB_EX_TOPMOST类型,MB_APPLMODAL和MB_SYSTEMMODAL一样。用系统模态消息框来改变各种各样的用户,主要的损坏错误需要立即注意(例如,内存溢出)。如果不是那些与hwnd联系的窗口,此标志对用户对窗口的相互联系没有影响。
MB_TASKMODAL
如果参数hwnd为NULL的话,那么除了所有属于当前线程高层次的窗口失效外,MB_TASKMODALL和MB_APPLMODAL一样。当调用应用程序或库没有一个可以得到的窗口句柄时,使用此标志。但仍需要阻止输入到调用线程的其他窗口,而不是搁置其他线程。
MB_DEFAULT_DESKTOP_ONLY
接收输入的当前桌面一定是一个缺省桌面。否则,函数调用失败。缺省桌面是一个在用户已经纪录且以后应用程序在此上面运行的桌面。
MB_HELP
把一个Help按钮增加到消息框。选择Help按钮或按F1产生一个Help事件。
MB_RIGHT
文本为右调整
MB_RTLREADING
用在Hebrew和Arabic系统中从右到左的顺序显示消息和大写文本。
MB_SETFOREGROUND
消息框变为前景窗口。在内部系统为消息个调用SetForegroundWindow函数。
MB_TOPMOST
消息框用WS_EX_TOPMOST窗口类型来创建MB_SERVICE_NOTIFICATION。

返回值

DOK(1)
OK
IDCANCEL(2)
CANCEL
IDABORT(3)
ABORT
IDRETRY(4)
RETRY
IDIGNORE(5)
IGNORE
IDYES(6)
YES
IDNO(7)
NO

//按钮
#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

例子

例子1,是、否对话框

    int nRet = MessageBox(_T("你好 世界!"),_T("tip"),MB_YESNO|MB_ICONEXCLAMATION|MB_APPLMODAL);if(IDYES == nRet){MessageBox(_T("IDYES!"),_T("tip"));}if(IDNO == nRet){MessageBox(_T("IDNO!"),_T("tip"));}

例子2 中止、重试、忽略对话框

    int nRet = MessageBox(_T("你好 世界!"),_T("tip"),MB_ABORTRETRYIGNORE|MB_ICONWARNING|MB_APPLMODAL);if(IDABORT == nRet){MessageBox(_T("IDABORT!"),_T("tip"));}else if(IDRETRY == nRet){MessageBox(_T("IDRETRY!"),_T("tip"));}else if(IDIGNORE == nRet){MessageBox(_T("IDIGNORE!"),_T("tip"));}

例子3 是、否、取消对话框

 int nRet = MessageBox(_T("你好 世界!"),_T("tip"),MB_YESNOCANCEL|MB_ICONINFORMATION);if(IDYES == nRet){MessageBox(_T("IDYES!"),_T("tip"));}else if(IDNO == nRet){MessageBox(_T("IDNO!"),_T("tip"));}else if(IDCANCEL == nRet){MessageBox(_T("IDCANCEL!"),_T("tip"));}

例子4 重试、取消对话框

    int nRet = MessageBox(_T("你好 世界!"),_T("tip"),MB_RETRYCANCEL|MB_ICONASTERISK|MB_APPLMODAL);if(IDRETRY == nRet){MessageBox(_T("IDRETRY!"),_T("tip"));}else if(IDCANCEL == nRet){MessageBox(_T("IDCANCEL!"),_T("tip"));}

例子5 确定、取消对话框

 int nRet = MessageBox(_T("你好 世界!"),_T("tip"),MB_OKCANCEL|MB_ICONQUESTION|MB_APPLMODAL);if(IDOK == nRet){MessageBox(_T("IDOK!"),_T("tip"));}else if(IDCANCEL == nRet){MessageBox(_T("IDCANCEL!"),_T("tip"));}

MFC:MessageBox函数随记相关推荐

  1. MFC:AfxMessageBox函数随记

    函数原型 函数原型1 int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 ); lpszText:弹窗内 ...

  2. AfxMessageBox与MessageBox函数

    创建消息提示对话框: 前者调用的是MFC的底层函数库,后者调用的是最为基本的Win32 API. MessageBox()的函数原型如下: int MessageBox(LPCTSTR lpszTex ...

  3. Windows API一日一练(一)第一个应用程序 使用应用程序句柄 使用命令行参数 MessageBox函数 RegisterClass和RegisterClassEx函数

    要跟计算机进行交互,就需要计算机显示信息给人看到,或者发出声音给人听到,然后人看到或听到相应的信息后,再输入其它信息给计算机,这样就可以让计算机进行数据处理,把结果显示给我们.现在就来编写一个最简单的 ...

  4. MFC全局函数开局——AfxGetApp解剖

    MFC全局函数开局--AfxGetApp解剖[转自晨风], MFC中有不少的全局函数,方便在不同对象中获取不同的内容或创建不同的对象.主要全局函数有: AfxWinInit() AfxBeginThr ...

  5. MFC Attach()函数和Detach()函数

    一.Windows对象和MFC对象的区别? MFC对象实际上并没有把整个Windows对象都包装在其中. 对于窗口:MFC对象它只是有一个窗口句柄而已,这个窗口句柄如果指向一个实际存在的窗口对象(窗口 ...

  6. C语言scanf函数奇遇记

    C语言scanf函数奇遇记 作者:ocean    撰写日期:2011-11-20 博客链接:http://oceanspace.tk 看<The C Programming Language& ...

  7. python考试时函数名记不到怎么办?

    python考试时函数名记不到怎么办 不知道各位同学有没有在python或者机器学习.人工智能实操考试中忘记了导入的包的函数名称.同时又不允许百度查询,这时候该怎么办呢? 一招教你破解: python ...

  8. 缓冲区溢出漏洞利用--调用白板Messagebox函数两次

    //******有漏洞的程序************* //漏洞函数VerifyPassword 由于文件大小是可变的 但是szBuffer大小只有50 当文件大小大于50的 //时候就会产生缓冲区溢 ...

  9. C++ MFC 画函数曲线(包含坐标)

    第一步:新建MFC. VC++6.0的话是文件--新建--工程--MFCAppWizard(exe)--填写工程名称--确定(其他的可以不动)--点单文档--直接点完成就行了. 第二步:找到OnDra ...

最新文章

  1. Hibernate学习(九)———— 二级缓存和事务级别详讲
  2. (原)vs2013编译boost1.60库
  3. 一般关于大宗商品的供需关系相关的数据网址有哪些?
  4. visio 2013下载和安装
  5. SVN导致目录图标出现“?”号解决方案
  6. 中国牛逼的程序员有哪些?入职华为两天转正,半个月升主任
  7. Android 蓝牙技术 实现终端间数据传输
  8. Python中的正则表达式(re)
  9. 优雅的校验参数-javax.validation
  10. 如何利用Camtasia给视频加上配音?
  11. git and github secrets
  12. Makefile编写练习题
  13. 服装商城电商-前端网页技术精美完整源码HTML+CSS+JS
  14. 有限元编程示例matlab + C++
  15. MCGS图库 触摸屏组态图库 触摸屏图库 昆仑通态触摸屏专用CGS
  16. OFDM和CPRI/eCPRI的速率计算
  17. php更换照片背景,ps怎么换照片背景
  18. word选择粘贴没有html格式,Word选择性粘贴怎么用?Word设置无格式文本粘贴快捷键的方法...
  19. 中文版 Ubuntu主目录里的桌面等中文目录名称改成英文
  20. 解决Google Chrome浏览器字体模糊的问题

热门文章

  1. 嵌入式开发环境搭建 与 系统移植
  2. 【CV】彩色图像、灰度图像、二值图像和索引图像区别?
  3. element popover 不显示/不隐藏问题解决方法
  4. jQuery EasyUI parser
  5. 论文收录引证是什么?
  6. 计算机神经影像学是干什么的,神经系统常用的影像学检查有哪些?
  7. 超级表格创始人中学时代揭秘
  8. Go实战--golang中使用firebase实时数据库(zabawaba99/firego)
  9. BrainTumorSeg
  10. Java代码实现WORD转PDF