在软件中我们经常会弹出个小窗口,给一点点提示.这就会用到消息对话框.

在Win32 API程序中只有MessageBox这一种用法.

而在MFC中就有三各方法:

.调用API中的MessageBox;  

.调用CWnd的成员函数MessageBox;

.调用全局函数AfxMessageBox;

MFC中MessageBox的用法

一    函数原型及参数
 function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integer;
 hWnd:对话框父窗口句柄,对话框显示在Delphi窗体内,可使用窗体的Handle属性,否则可用0,使其直接作为桌面窗口的子窗口。
 Text:欲显示的信息字符串。
 Caption:对话框标题字符串。
 Type:对话框类型常量。
 该函数的返回值为整数,用于对话框按钮的识别。
 、类型常量
 对话框的类型常量可由按钮组合、缺省按钮、显示图标、运行模式四种常量组合而成。
 ()按钮组合常量
 MB_OK = $;         //一个确定按钮
 MB_OKCANCEL = $;      //一个确定按钮,一个取消按钮
 MB_ABORTRETRYIGNORE = $;  //一个异常终止按钮,一个重试按钮,一个忽略按钮
 MB_YESNOCANCEL = $;     //一个是按钮,一个否按钮,一个取消按钮
 MB_YESNO = $;        //一个是按钮,一个否按钮
 MB_RETRYCANCEL = $;     //一个重试按钮,一个取消按钮
 ()缺省按钮常量
 MB_DEFBUTTON1 = $;     //第一个按钮为缺省按钮
 MB_DEFBUTTON2 = $;     //第二个按钮为缺省按钮
 MB_DEFBUTTON3 = $;     //第三个按钮为缺省按钮
 MB_DEFBUTTON4 = $;     //第四个按钮为缺省按钮
 ()图标常量
 MB_ICONHAND = $;        //“×”号图标
 MB_ICONQUESTION = $;      //“?”号图标
 MB_ICONEXCLAMATION = $;    //“!”号图标
 MB_ICONASTERISK = $;      //“i”图标
 MB_USERICON = $;        //用户图标
 MB_ICONWARNING = MB_ICONEXCLAMATION;  //“!”号图标
 MB_ICONERROR = MB_ICONHAND;      //“×”号图标
 MB_ICONINFORMATION = MB_ICONASTERISK; //“i”图标
 MB_ICONSTOP = MB_ICONHAND;       //“×”号图标
 ()运行模式常量
 MB_APPLMODAL = $;    //应用程序模式,在未结束对话框前也能切换到另一应用程序
 MB_SYSTEMMODAL = $;   //系统模式,必须结束对话框后,才能做其他操作
 MB_TASKMODAL = $;    //任务模式,在未结束对话框前也能切换到另一应用程序
 MB_HELP = $;       //Help Button
 、函数返回值
             //对话框建立失败
 IDOK =         //按确定按钮
 IDCANCEL =       //按取消按钮
 IDABOUT =        //按异常终止按钮
 IDRETRY =        //按重试按钮
 IDIGNORE =       //按忽略按钮
 IDYES =         //按是按钮
 IDNO =         //按否按钮 二 用法 . MessageBox("这是一个最简单的消息框!");
. MessageBox("这是一个有标题的消息框!","标题");
. MessageBox("这是一个确定取消的消息框!","标题", MB_OKCANCEL );
. MessageBox("这是一个警告的消息框!","标题", MB_ICONEXCLAMATION );
. MessageBox("这是一个两种属性的消息框!","标题",
MB_ICONEXCLAMATION|MB_OKCANCEL );
. if(MessageBox("一种常用的应用","标题
" ,MB_ICONEXCLAMATION|MB_OKCANCEL)==IDCANCEL)
return;
注意:
以上消息框的用法是在CWnd的子类中的应用,如果不是,则要MessageBox(NULL,"ddd","ddd",MB_OK);或MessageBox(hWnd,"ddd","ddd",MB_OK); hWnd为某窗口的句柄,或者直接用AfxMessageBox。 二、在MessageBox中显示变量的值 CString string; string.format("%d%s",m_age, m_address); //将变量组装到字符串中 MessageBox(string,"消息框标题",消息框类型); Win32 API 中MessageBox 举个简单例子 #include <windows.h> int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPre,PSTR szCmdLine, int iCmdShow){ MessageBox(NULL,TEXT("hello world."),TEXT("Title"),);//TEXT跟在MFC中常用的_T()一样,表示unicode字符 return ; } 消息对话框函数定义如下 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的封装.它有两个不同的重载函数. ) int AFXAPI AfxMessageBox(UINT nIDPrompt, UINT nType = MB_OK, UINT nIDHelp = (UINT)-) 其中nIDPrompt是字符串资源ID,也就是你在String Table中定义的字符串. nType跟前面MessageBox中的完全一样. hIDHelp是跟帮助信息相关的.它这里来个(UINT)-,把一个-1转成无符号类型.我实在没搞懂啥意思,我都怀疑是不是它们写错了.应该直接写个0. 反正在这里默认值0也就表示使用默认的帮助文档信息. 使用举例AfxMessageBox(IDS_MSG) ) int AFXAPI AfxMessageBox(LPCTSTR lpszText, UINT nType = MB_OK,UINT nIDHelp = ); 其中的lpszText是指定对话框要显示的内容.我们发现封装好处就是使用更简单,这里之所以简单是因为用到了默认参数,用户使用时不用老指定一堆参数. 不过我们发现有点扯蛋的事封装到最后竟然连指定对话框标题的参数都给能没了.你没法再去指定了,只能默认显示应用程序名字了.我估计当初那些写代码来封装的人肯定也纠结了番,这title名字嘛给默认指定一个啥才好啊? 估计肯定不会有满意的名字,最后干脆把这参数弄没了,去动态获取程序名字做标题了. CWnd的MessageBox 只能继承自CWnd的类才能使用该函数: int MessageBox(LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK) 我们发现它也只是稍微封装了下API的MessageBox,只是少了个HWnd的参数,然后后面有两个参数有默认值.其他完全一样.
当然如果你想使用消息对话框更漂亮点,添加些额外的消息.那就直接整成个Dialog就行了.

转载:MFC之MessageBox、AfxMessageBox用法的更多相关文章

  1. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

  2. MFC之MessageBox、AfxMessageBox用法

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

  3. 【转】VC中MessageBox与AfxMessageBox用法与区别

    原文网址:http://blog.csdn.net/holybin/article/details/28403109 一.MessageBox()用法 1.函数原型 Messagebox函数在Win3 ...

  4. VC中MessageBox与AfxMessageBox用法与区别

    一.MessageBox()用法 1.函数原型 Messagebox函数在Win32 API和MFC里的定义有区别. Win32 API的定义如下: int WINAPI MessageBox(    ...

  5. MFC总结之CListCtrl用法及技巧(二)

    续第一篇:MFC总结之CListCtrl用法及技巧(一) http://blog.csdn.net/zwgdft/article/details/7560592 本篇重点介绍:禁止拖动表头.让第一列居 ...

  6. delphi中Application.MessageBox函数用法详解

    delphi中Application.MessageBox函数用法详解 Application.MessageBox是TApplication的成员函数,声明如下:functionTApplicati ...

  7. [转载]PyTorch中permute的用法

    [转载]PyTorch中permute的用法 来源:https://blog.csdn.net/york1996/article/details/81876886 permute(dims) 将ten ...

  8. MFC MessageBox AfxMessageBox

    MessageBox 一.消息框是个很常用的控件,属性比较多,本文列出了它的一些常用方法,及指出了它的一些应用场合.1.MessageBox("这是一个最简单的消息框!");2.M ...

  9. MFC之MessageBox用法

    一    函数原型及参数 function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integer; hWnd:对话框父窗口 ...

随机推荐

  1. 洛谷 P1821 [USACO07FEB]银牛派对Silver Cow Party 题解

    P1821 [USACO07FEB]银牛派对Silver Cow Party 题目描述 One cow from each of N farms (1 ≤ N ≤ 1000) conveniently ...

  2. 【JZOJ6216】【20190614】序列计数

    题目 一个长为\(N\)的串\(S\),\(M\)询问区间\([l,r]\)不同的子串个数,字符集为$ C $ \(N ,M \le 10^5 \ , \ C \le 10\) 题解 这题非常套路.. ...

  3. 第12组 Alpha冲刺(4/6)

    Header 队名:To Be Done 组长博客 作业博客 团队项目进行情况 燃尽图(组内共享) 由于这两天在修bug,燃尽图没有下降 展示Git当日代码/文档签入记录(组内共享) 注: 由于Git ...

  4. touchz,mkdir,vi的区别

    touchz:创建空白文档 mkdir:创建一个目录 vi : 创建一个编辑状态的空文档,保存退出后创建成功.

  5. 去参加了十四届D2前端大会~

    朋友喊我去一起去d2,原来一直在加班,没有想去的动力,后来业务上线,幸运的入手了别人转的一张票(也不便宜啊)- 讲了五个挑战 端侧渲染体系的重塑,从PC时代到无线时代,再到未来的IOT时代,在渲染方面 ...

  6. Docker快速部署gitlab应用实战

    Gitlab是一个用于仓库管理系统开源项目,使用Git作为代码管理工具,并在此基础上搭建的web服务,可通过web界面进行访问公开或者私人项目,拥有类似于GIthub类似的功能,能够浏览源代码,可管理 ...

  7. PHP 之循环创建文件夹

    /** * 循环创建文件夹 * @param string $dir 需要创建的文件夹路径 * @param integer $mode 文件夹权限 * @return bool 返回创建是否成功 * ...

  8. Verticles for Web Application

    Core Concept: HTTP-Centered EventBus Event, EventLoop, Executor, Handler, HTTPContext, Callback on E ...

  9. CS224n学习笔记(三)

    语言模型 对于一个文本中出现的单词 \(w_i\) 的概率,他更多的依靠的是前 \(n\) 个单词,而不是这句话中前面所有的单词. \[ P\left(w_{1}, \ldots, w_{m}\rig ...

  10. web服务器请求代理方式

    1 通信数据转发程序:代理.网关.隧道 代理:是一种有转发功能的应用程序,他扮演了位于服务器和客户端“中间人”的角色,接收客户端发送的请求并转发给服务器:同时也接收服务器返回的响应并转发给客户端. 使 ...