原型:

 int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 );

 int AFXAPI AfxMessageBox( UINT nIDPrompt, UINT nType = MB_OK, UINT nIDHelp = (UINT) –1 );

在第一种形式中:lpszText为要显示的文本,消息框的标题为应用程序的可执行文件名。在第二种形式中,nIDPrompt为要显示的文本字符串在字符串表中的ID。函数调用时会自动从字符串表中载入字符串并显示在消息框中。nType为消息框中显示的按钮风格和图标风格的组合,可以采用|(或)操作符组合各种风格。

  按钮风格

  MB_ABORTRETRYIGNORE 消息框中显示Abort、Retry、Ignore按钮

  MB_OK 显示OK按钮

  MB_OKCANCEL 显示OK、Cancel按钮

  MB_RETRYCANCEL 显示Retry、Cancel按钮

  MB_YESNO 显示Yes、No按钮

  MB_YESNOCANCEL 示Yes、No、Cancel按钮

  图标风格

  MB_ICONINFORMATION 显示一个i图标,表示提示

  MB_ICONEXCLAMATION 显示一个惊叹号,表示警告

  MB_ICONSTOP 显示手形图标,表示警告或严重错误

  MB_ICONQUESTION 显示问号图标,表示疑问

  使用时,可以只调用AfxMessageBox(LPCTSTR lpszText);这样默认风格为AfxMessageBox(LPCTSTR lpszText,MB_OK|MB_ICONEXCLAMATION );

AfxMessageBox()与MessageBox()的区别

与AfxMessageBox类似的函数MessageBox,它是CWnd的类成员函数:

  int MessageBox( LPCTSTR lpszText,LPCTSTR lpszCaption = NULL,UINT nType = MB_OK );

  两个函数的区别:AfxMessageBox比MessageBox简单一些,因为它是一个全局函数所以不需要对应的一个窗口类,但是不能控制消息框标题,常用于调试程序时的内部数据输出或警告;MessageBox比较正式,常用在要提交的应用程序版本中,可以控制标题内容而不必采用含义不明的可执行文件名为标题。

  举例:

  AfxMessageBox(“Are you sure?”,MB_YESNO|MB_ICONQUESTION);

  int a = MessageBox(TEXT( "是否确认删除?" ), TEXT("Warning!!"),4);

  if (a == 6)

  AfxMessageBox("Yes");

  else

  AfxMessageBox("No");

  (其中#define IDYES 6 #define IDNO 7)

  主要区别:

  1.MessageBox 如果在非CWnd类中使用则是API函数,使用起来非常不便,必须指定标题和样式

  否则使用CWnd类的函数,只需一个内容参数就可以了,AfxMessageBox和CWnd类成员函数类似,使用起来很方便,因为是Afx 基于框架的函数

  2.MessageBox是模态对话框,你不进行确认时程序不往下运行,它会阻塞你当前的线程为,除非你程序是多线程的程序,否则只有等待模态对话框被确认

  3、如果用MFC的话,请尽量使用afxmessagebox,因为这个全局的对话框最安全,也最方便。

  但是在WIN32 SDK的情况下只能使用MESSAGEBOX。

问题:

MFC中 MessageBox 函数字符串前加 L 什么意思??

vc++在最近的几个版本 例如 vs2003 2005,2008等等 MFC 默认的 字符集
unicode 见图
项目属性图
所以用L 把字符串转换成unicode字符串,如果 使用 “多字节字符集” 则不需要L
建议 使用  _T  宏 来代替这个 L,关于_T 宏 相见 tchar.h
大体源码是这么的:
#define __T(x) L ## x
#define _T(x) __T(x)
作用是 当使用unicode 字符集的时候 _T 被替换为L
使用宽字符 就替换为空
把字符串转换成unicode字符串,这种字符串一个字符占两个字节
而一般ASCII字符是占一个字节

使用一个MessageBox:


int msgboxID = MessageBox( NULL, L"temp.txt already exists./nDo you want to replace it?", L"Confirm Save As", MB_ICONEXCLAMATION | MB_YESNO ); if (msgboxID == IDYES) { // TODO: add code } 具体的编码值参看http://msdn.microsoft.com/en-us/library/ms645505(v=vs.85).aspx。
												

AfxMessageBox相关推荐

  1. 由MessageBox和AfxMessageBox的使用异同所感

    我记得刚开始学图形界面编程的时候,接触的最早的一个函数应该就是MessageBox,之前都一直是控制台程序,突然能运行蹦出一个对话框感觉还是很新鲜的.当时还利用MessageBox写一些恶搞程序,利用 ...

  2. error C2665: “AfxMessageBox”

    使用AfxMessageBox("CreatePen Error!!"); 这个语句时,编译器提示"AfxMessageBox": 2 个重载中没有一个可以转换 ...

  3. MessageBox、::MessageBox 、AfxMessageBox三者的区别

    2019独角兽企业重金招聘Python工程师标准>>> 三者的本质区别如下: Windows API: MessageBox(); CWnd::MessageBox(); MFC: ...

  4. MessageBox和AfxMessageBox函数的区别

    1.可以以下面的方式调用AfxMessageBox. AfxMessageBox("Are you sure?",MB_YESNO|MB_ICONQUESTION): 2.与Afx ...

  5. 【转】AfxMessageBox、MessageBox、::MessageBox的区别

    AfxMessageBox的函数原型 int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 ); int ...

  6. VC++ 如何让 MessageBox或AfxMessageBox 按钮显示英文或其他语言

    由于特殊原因我们需要将 MessageBox 或 Dialog 的按钮"确定"."取消"用英文或其他语言显示.在网上查找了很多相关内容,但很多要么很麻烦,要么根 ...

  7. Win32:MessageBox、AfxMessageBox、及工作线程中的对话框

    首先我们要清晰一点,同样是线程,但创建线程方式不同,由于创建线程的内部实现不同,也就意味着对后期影响是不一样的. 三种创建线程的方式 C语言的:__beginthread()/__beginthrea ...

  8. MFC之MessageBox、AfxMessageBox用法

    在软件中我们经常会弹出个小窗口,给一点点提示.这就会用到消息对话框. 在Win32 API程序中只有MessageBox这一种用法. 而在MFC中就有三各方法: 1.调用API中的MessageBox ...

  9. MFC:AfxMessageBox函数随记

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

最新文章

  1. LiteRouter 路由
  2. Django打造在线教育平台_day_4: 找回密码
  3. ios学习记录 UITextField输入return键监听
  4. HoughLinesP函数(概率检测直线)
  5. Android 即时通讯开发小结(二)
  6. CentOS 下 yum(基于rpm的包管理工具) 命令详解
  7. 比较json和fastjson的put()
  8. Spring Cloud Feign 1(声明式服务调用Feign 简介)
  9. Symantec清除工具 CleanWipe_14.3.558.1000
  10. IDEA中自动导包及快捷键
  11. Java Se 、JavaEE、JavaME区别
  12. android开发经典实战!来自阿里巴巴佛系安卓程序员的指南,专题解析
  13. 赵小楼《天道》《遥远的救世主》深度解析(49)丁元英的“不执著出人头地”和主流价值观的“执著出人头地”
  14. 微信小程序学习(五)
  15. 029:vue+openlayers:使用MVT格式读取瓦片数据(示例代码)
  16. python笔记5 - 字符串格式化表达式,while语句嵌套,for循环,break,continue,死循环
  17. 君康人寿2019年排名_君康人寿保险靠谱吗?
  18. android 键盘回车按钮事件,Android中ENTER键(确认键)点击响应
  19. 偏微分方程:计算基本理论
  20. gclient 设置代理问题

热门文章

  1. 自动化SQL Server Analysis Server表格模型的文档
  2. 获取移除指定Url参数(原创)
  3. RabbitMQ的基本概念
  4. response和request
  5. MssqlOnLinux 主从集群【2】
  6. apache+mysql+php的环境配置
  7. 规则2 使用内容发布网络
  8. DataList绑定xml数据,并实现删除和修改
  9. 学习拾遗--用RadioButtonList 或者DropDownList 进行动态赋值问题
  10. DocumentHelper用法