MessageBox、::MessageBox 、AfxMessageBox三者的区别
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
三者的本質(zhì)區(qū)別如下:
Windows API: MessageBox();
?
CWnd::MessageBox();?
?
MFC: AfxMessageBox();
?
其中CWnd::MessageBox() 與 AfxMessageBox()?都是對(duì) API 函數(shù)MessageBox()的封裝。
?
關(guān)于是否需要句柄HWND的說(shuō)明:
1)MessageBox是API,因此它需要HWND參數(shù)指定其所屬窗體。
?
2)CWnd::MessageBox() 是CWnd的成員函數(shù),它要求MessageBox只能在cwnd類及其子類中使用;它不要求HWND參數(shù),因?yàn)镃Wnd已經(jīng)指明了其所屬窗口。 因此CWnd::MessageBox()和::MessageBox(HWND)作用等同。
?
3)AfxMessageBox()mfc中的全局函數(shù),無(wú)句柄HWND參數(shù)。能用MessageBox()的地方都能用AfxMessageBox(),但AfxMessageBox不能設(shè)置消息框標(biāo)題(它的默認(rèn)標(biāo)題就是應(yīng)用程序的可執(zhí)行文件名).
?
使用建議:
1)在非CWnd類中使用則是API MessageBox函數(shù),但它使用起來(lái)非常不便,必須指定標(biāo)題、句柄和樣式等,否則選用CWnd::MessageBox()或AfxMessageBox,它們使用起來(lái)方便。
2)MessageBox是模態(tài)對(duì)話框,你不進(jìn)行確認(rèn)時(shí)程序不往下運(yùn)行,它會(huì)阻塞你當(dāng)前的線程為,除非你程序是多線程的程序,否則只有等待模態(tài)對(duì)話框被確認(rèn)。
3)如果用MFC的話,請(qǐng)盡量使用afxmessagebox,因?yàn)檫@個(gè)全局的對(duì)話框最安全,也最方便。
轉(zhuǎn)載于:https://my.oschina.net/ucliaohh/blog/497130
總結(jié)
以上是生活随笔為你收集整理的MessageBox、::MessageBox 、AfxMessageBox三者的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Word2007如何添加或去掉文字图片水
- 下一篇: Android中基于Socket的网络通