1. 用法不同
AfxMessageBox:比较简单,是一个全局函数所以不需要对应的一个窗口类,但是不能控制消息框标题,常用于调试程序时的内部数据输出或警告,使用时要加上头文件afxwin.h中,不过该文件一般自动列在stdafx中了;
MessageBox:比较正式,常用在要提交的应用程序版本中,可以控制标题内容而不必采用含义不明的可执行文件名为标题,使用时在CWnd的子类中使用比较简单,在非子类中用法相对比较麻烦。
2. 声明形式不同
AfxMessageBox的声明形式 :
int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 );
MessageBox的声明形式:
int WINAPI MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);
3. 用法举例
AfxMessageBox:
AfxMessageBox(_T("请首先建立八叉树!"))
MessageBox: 这是C~doc类中调用MessageBox的情景,可见要比AfxMessageBox用法麻烦的多
m_gOctree->SetRevolutionNum(t);
int cur_rev=m_gOctree->GetRevolutionNum();
CString str;
str.Format(_T("当前所设定的分辨率为:%d*%d*%d!"),
static_cast<int>(pow(static_cast<float>(2),static_cast<float>(cur_rev))),
static_cast<int>(pow(static_cast<float>(2),static_cast<float>(cur_rev))),
static_cast<int>(pow(static_cast<float>(2),static_cast<float>(cur_rev))));
CMainFrame* pMainFrame=(CMainFrame*)(AfxGetApp()->m_pMainWnd);
HWND hwnd=pMainFrame->GetSafeHwnd();
MessageBox(hwnd,str,_T("分辨率"),MB_OKCANCEL);
Reference:
http://baike.baidu.com/view/1441706.htm