AfxMessageBox
原型:
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:
AfxMessageBox相关推荐
- 由MessageBox和AfxMessageBox的使用异同所感
我记得刚开始学图形界面编程的时候,接触的最早的一个函数应该就是MessageBox,之前都一直是控制台程序,突然能运行蹦出一个对话框感觉还是很新鲜的.当时还利用MessageBox写一些恶搞程序,利用 ...
- error C2665: “AfxMessageBox”
使用AfxMessageBox("CreatePen Error!!"); 这个语句时,编译器提示"AfxMessageBox": 2 个重载中没有一个可以转换 ...
- MessageBox、::MessageBox 、AfxMessageBox三者的区别
2019独角兽企业重金招聘Python工程师标准>>> 三者的本质区别如下: Windows API: MessageBox(); CWnd::MessageBox(); MFC: ...
- MessageBox和AfxMessageBox函数的区别
1.可以以下面的方式调用AfxMessageBox. AfxMessageBox("Are you sure?",MB_YESNO|MB_ICONQUESTION): 2.与Afx ...
- 【转】AfxMessageBox、MessageBox、::MessageBox的区别
AfxMessageBox的函数原型 int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 ); int ...
- VC++ 如何让 MessageBox或AfxMessageBox 按钮显示英文或其他语言
由于特殊原因我们需要将 MessageBox 或 Dialog 的按钮"确定"."取消"用英文或其他语言显示.在网上查找了很多相关内容,但很多要么很麻烦,要么根 ...
- Win32:MessageBox、AfxMessageBox、及工作线程中的对话框
首先我们要清晰一点,同样是线程,但创建线程方式不同,由于创建线程的内部实现不同,也就意味着对后期影响是不一样的. 三种创建线程的方式 C语言的:__beginthread()/__beginthrea ...
- MFC之MessageBox、AfxMessageBox用法
在软件中我们经常会弹出个小窗口,给一点点提示.这就会用到消息对话框. 在Win32 API程序中只有MessageBox这一种用法. 而在MFC中就有三各方法: 1.调用API中的MessageBox ...
- MFC:AfxMessageBox函数随记
函数原型 函数原型1 int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 ); lpszText:弹窗内 ...
最新文章
- LiteRouter 路由
- Django打造在线教育平台_day_4: 找回密码
- ios学习记录 UITextField输入return键监听
- HoughLinesP函数(概率检测直线)
- Android 即时通讯开发小结(二)
- CentOS 下 yum(基于rpm的包管理工具) 命令详解
- 比较json和fastjson的put()
- Spring Cloud Feign 1(声明式服务调用Feign 简介)
- Symantec清除工具 CleanWipe_14.3.558.1000
- IDEA中自动导包及快捷键
- Java Se 、JavaEE、JavaME区别
- android开发经典实战!来自阿里巴巴佛系安卓程序员的指南,专题解析
- 赵小楼《天道》《遥远的救世主》深度解析(49)丁元英的“不执著出人头地”和主流价值观的“执著出人头地”
- 微信小程序学习(五)
- 029:vue+openlayers:使用MVT格式读取瓦片数据(示例代码)
- python笔记5 - 字符串格式化表达式,while语句嵌套,for循环,break,continue,死循环
- 君康人寿2019年排名_君康人寿保险靠谱吗?
- android 键盘回车按钮事件,Android中ENTER键(确认键)点击响应
- 偏微分方程:计算基本理论
- gclient 设置代理问题