消息对话框(MessageBox)用法介绍
在软件中我们经常会弹出个小窗口,给一点点提示.这就会用到消息对话框.
在Win32 API程序中只有MessageBox这一种用法.
而在MFC中就有三各方法:
1.调用API中的MessageBox 2.调用CWnd的成员函数MessageBox 3.调用全局函数AfxMessageBox
Win32 API 中MessageBox
举个简单例子
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPre,PSTR szCmdLine, int iCmdShow){
MessageBox(NULL,TEXT("hello world."),TEXT("Title"),0);//TEXT跟在MFC中常用的_T()一样,表示unicode字符
return 0;
}
消息对话框函数定义如下
MessageBox( HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType);
参数hWnd窗口句柄,一般用的较少.这例子中也没有涉及窗口就直接写NULL.
参数lpText是消息对话框中显示的内容
参数lpCaption是对话框的标题
参数uType,指定对话框按钮,图标.
按钮类型如下
这都是些在WinUser.h中定义的宏.MB是MessageBox Button的简称,后面的文字就表示有几个按钮,按钮上显示啥字.
比如MB_YESNOCANCEL 就是显示3个按钮,分别是yes, no , cancel
MB_OK
MB_OKCANCEL
MB_ABORTRETRYIGNORE
MB_YESNOCANCEL
MB_YESNO
MB_RETRYCANCEL
MB_CANCELTRYCONTINUE
图标显示
另外我还会常在对话框上面看到一个问号和警告的一些图标,可以通过如下宏指定
MB_ICONWARNING
MB_ICONERROR
MB_ICONINFORMATION
MB_ICONSTOP
默认焦点
现在按钮图标都有了你可能还会想到如果有几个按钮那默认的焦点是在哪个按钮.可以通过如下宏
MB_DEFBUTTON1
MB_DEFBUTTON2
MB_DEFBUTTON3
MB_DEFBUTTON4
数字代表从左到右按钮的位置
上面讲了按钮,图标,默认焦点的三个宏,但怎么一起用呢 ?通过|这个符号把它们组合起来就是.举例
MessageBox(NULL,TEXT("hello world."),TEXT("Title"),MB_OKCANCEL|MB_ICONINFORMATION|MB_DEFBUTTON1);
对话框函数返回值
最后你可能还会想如果用户点不同的按钮,我们怎么得到用户的选择信息呢? 很简单,就是通过函数MessageBox的返回值就判断.函数会有如下返回值
IDOK
IDCANCEL
IDABORT
IDRETRY
IDIGNORE
IDYES
IDNO
所以可以这样来判断
if( MessageBox(NULL,TEXT("hello world."),TEXT("Title"),MB_OKCANCEL) == IDOK)
{
}
AfxMessageBox用法
AfxMessageBox是MFC对MessageBox的封装.它有两个不同的重载函数.
1) int AFXAPI AfxMessageBox(UINT nIDPrompt, UINT nType = MB_OK, UINT nIDHelp = (UINT)-1)
其中nIDPrompt是字符串资源ID,也就是你在String Table中定义的字符串. nType跟前面MessageBox中的完全一样. hIDHelp是跟帮助信息相关的.它这里来个(UINT)-1,把一个-1转成无符号类型.我实在没搞懂啥意思,我都怀疑是不是它们写错了.应该直接写个0. 反正在这里默认值0也就表示使用默认的帮助文档信息.
使用举例AfxMessageBox(IDS_MSG)
2) int AFXAPI AfxMessageBox(LPCTSTR lpszText, UINT nType = MB_OK,
UINT nIDHelp = 0);
其中的lpszText是指定对话框要显示的内容.我们发现封装好处就是使用更简单,这里之所以简单是因为用到了默认参数,用户使用时不用老指定一堆参数.
不过我们发现有点扯蛋的事封装到最后竟然连指定对话框标题的参数都给能没了.你没法再去指定了,只能默认显示应用程序名字了.我估计当初那些写代码来封装的人肯定也纠结了番,这title名字嘛给默认指定一个啥才好啊? 估计肯定不会有满意的名字,最后干脆把这参数弄没了,去动态获取程序名字做标题了.
CWnd的MessageBox
只能继承自CWnd的类才能使用该函数
int MessageBox(LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK)
我们发现它也只是稍微封装了下API的MessageBox,只是少了个HWnd的参数,然后后面有两个参数有默认值.其他完全一样.
当然如果你想使用消息对话框更漂亮点,添加些额外的消息.那就直接整成个Dialog就行了.
消息对话框(MessageBox)用法介绍的更多相关文章
- [转载]ExtJs4 笔记(6) Ext.MessageBox 消息对话框
作者:李盼(Lipan) 出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法 ...
- ExtJs4 笔记(6) Ext.MessageBox 消息对话框
本篇演示消息对话框的用法,ExtJs封装了可能用到的各类消息框,并支持自定义的配置. 如下是用到的html: [html] <h1>各种消息框</h1> <div id= ...
- 消息对话框 MessageBoxButtons
消息对话框MessageBox经常用于向用户显示通知信息.例如,在操作过程中遇到错误或程序异常,经常会使用这种方式给用户以提示,它是特殊类型的对话框. 在C#中,MessageBox消息对话框位于Sy ...
- WPF编程,C#中弹出式对话框 MessageBox 的几种用法。
原文:WPF编程,C#中弹出式对话框 MessageBox 的几种用法. 1.MessageBox.Show("Hello~~~~"); 最简单的,只显示提示信息. 2.Mes ...
- C# MessageBox 消息对话框
在程序中,我们经常使用消息对话框给用户一定的信息提示,如在操作过程中遇到错误或程序异常,经常会使用这种方式给用于以提示.在C#中,MessageBox消息对话框位于System.Windows.For ...
- C#中的MessageBox消息对话框
关键字:C# MessageBox 消息对话框 在程序中,我们经常使用消息对话框给用户一定的信息提示,如在操作过程中遇到错误或程序异常,经常会使用这种方式给用于以提示.在C#中,MessageBox消 ...
- 【转】Delphi的消息对话框
Delphi的消息对话框 输入输出inputBox()函数MessageBox()ShowMessage 对话框是Windows操作系统中程序与用户沟通的一种常见的交互方式,对话框可以向用户提供当前程 ...
- C#中MessageBox用法大全(转)
我们在程序中经常会用到MessageBox. MessageBox.Show()共有21中重载方法.现将其常见用法总结如下: 1.MessageBox.Show("Hello~~~~&quo ...
- Qt——消息对话框的设计
1.消息对话框是什么 消息对话框(MessageBox)提供了一个模态对话框,用来通知用户某些信息,或者用来询问用户一个问题并获得一个答复. 先看下面2张图—— 第一张图是网易云音乐的界面截图,在删除 ...
随机推荐
- RPC框架——简单高效hessian的使用方式
RPC(Remote Procedure Call Protocol) RPC使用C/S方式,采用http协议,发送请求到服务器,等待服务器返回结果.这个请求包括一个参数集和一个文本集,通常形成“cl ...
- APNs原理解析
什么是APNs 先说一下远程推送,一般我们有自己的服务器,在这个过程中是Provider的角色,如图,推送从我们的服务器到我们的APP的过程就是要通过APNs来发送 APNs(Apple Push N ...
- Qt之QNetworkInterface(查询网络接口),QHostInfo(查询主机IP)
http://blog.csdn.net/u011012932/article/details/50775052 http://blog.csdn.net/u011012932/article/det ...
- Windows Phone 8初学者开发—第8部分:理解编译和部署
原文 Windows Phone 8初学者开发—第8部分:理解编译和部署 第8部分:理解编译和部署 原文地址: http://channel9.msdn.com/Series/Windows-Phon ...
- Python web框架有哪些
简单易学的web.py, 大型的django:文档最完善.市场占有率最高.招聘职位最多. Tornado 具体看:http://feilong.me/2011/01/talk-about-python ...
- perl post 带上请求头
my $url='https://www.zjcap.cn/business/dispatch_post.do?action=submitAdminLogin'; my $res = $ua-> ...
- stm32之PWM
PWM是pulse width modulation的缩写,即脉冲宽度调制.其通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形: 1.PWM是一种对模拟信号电平进行数字编码的方法.通过高分辨率计 ...
- JS,Jquery - 三元运算符
在javascript中使用三元运算符. 要使用 " [] " ,对运算式进行包裹.
- 静态化 - 伪静态技术(Apache Rewrite 实现)
打开apache的配置文件httpd.conf 找到 #LoadModule rewrite_module modules/mod_rewrite.so 把前面#去掉.没有则添加,但必选独占一行,使a ...
- 自定义ActionBar背景(分别针对3.0以下和3.0以上的版本)
官方原文:http://developer.android.com/training/basics/actionbar/styling.html 针对3.0以上的版本: <?xml versio ...