MessageBox、::MessageBox 、AfxMessageBox三者的区别
2019獨角獸企業重金招聘Python工程師標準>>>
三者的本質區別如下:
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,因為這個全局的對話框最安全,也最方便。
轉載于:https://my.oschina.net/ucliaohh/blog/497130
總結
以上是生活随笔為你收集整理的MessageBox、::MessageBox 、AfxMessageBox三者的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Word2007如何添加或去掉文字图片水
- 下一篇: InfoQ宣布成立CNUT容器技术俱乐部