C++/C编程学习:梳理09---MessageBox、::MessageBox 、AfxMessageBox三者的区别

Windows API: MessageBox();

CWnd::MessageBox(); 

MFC: AfxMessageBox();

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

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

1)MessageBox是API,因此它需要HWND参数指定其所属窗体。

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

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

使用建议:

1)在非CWnd类中使用则是API MessageBox函数,但它使用起来非常不便,必须指定标题、句柄和样式等,否则选用CWnd::MessageBox()或AfxMessageBox,它们使用起来方便。
2)MessageBox是模态对话框,你不进行确认时程序不往下运行,它会阻塞你当前的线程为,除非你程序是多线程的程序,否则只有等待模态对话框被确认。
3)如果用MFC的话,请尽量使用afxmessagebox,因为这个全局的对话框最安全,也最方便。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值