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

该博客旨在分享 IT 技术心得和实际工作中遇到问题的解决方法,以下是新浪博客地址 http://blog.sina.com.cn/qianyumolu ,则为分享经济、行业趋势、心灵文章等,有兴趣的朋友可以踩踩,讨论分享  我爱你小燕

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


以前知道这几个函数有差别,但也没有去细究,最近隔了很久没写VC程序了,结果写到使用MESSAGEBOX时出错了,还为之费解,于是上网找了一下资料,清楚了这三个函数的区别,所以写此文章(参考了大量其他人的所写的资料)。使自己能长记性,同时也希望对一些不甚了解的人有所帮助。

 

三者的本质区别如下:

Windows API:MessageBox();

 

CWnd::MessageBox(); 

 

MFC: AfxMessageBox();

 

其中CWnd::MessageBox() AfxMessageBox() 都是对API 函数MessageBox()的封装。

 

关于是否需要句柄HWND的说明:

1MessageBoxAPI,因此它需要HWND参数指定其所属窗体。

 

2CWnd::MessageBox()CWnd的成员函数,它要求MessageBox只能在cwnd类及其子类中使用;它不要求HWND参数,因为CWnd已经指明了其所属窗口。因此CWnd::MessageBox()::MessageBox(HWND)作用等同。

 

3AfxMessageBox()mfc中的全局函数,无句柄HWND参数。能用MessageBox()的地方都能用AfxMessageBox(),但AfxMessageBox不能设置消息框标题(它的默认标题就是应用程序的可执行文件名).

 

使用建议:

1)在非CWnd类中使用则是APIMessageBox函数,但它使用起来非常不便,必须指定标题、句柄和样式等,否则选用CWnd::MessageBox()AfxMessageBox,它们使用起来方便。


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

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

 


MFCMessageBox是对MessageBox的封装,它有两个不同的重载函数。第一个重载函数是AfxMessageBox(UINT nIDPrompt, UINT nType = MB_OK, UINT nIDHelp = (UINT)-1),它可以显示一个提示信息,并提供一些按钮和图标供用户选择。第二个重载函数是CWnd的成员函数MessageBox,它也可以显示一个提示信息,并提供一些按钮和图标供用户选择。另外,MFC还提供了一个全局函数AfxMessageBox,它和MessageBox的功能类似,可以在MFC应用程序中使用。MFCMessageBox相对于Win32 API的MessageBox更加灵活和方便,可以实现自定义的MessageBox布局和风格。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MFCMessageBox的用法](https://blog.csdn.net/qq_36633275/article/details/107913192)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [MFC 自定义 MessageBox](https://download.csdn.net/download/china_o3/17713227)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值