请问,AfxMessageBox 和 MessageBox两个函数的区别
解决方案 »
- 用opencv实现逆滤波,维纳滤波图像复原(维纳滤波有个问题请高人指点)
- 在对话框的类中定义一个成员变量_ConnectionPtr,老是出错,请教?
- 用tinyxml读取一个xml的一个element的attribute出现点问题
- 按鈕後跳出開啟檔案的錯誤??
- visual stdio 6.0 sp3是什么意思
- 请问如何将当前屏幕保存为png格式,或是将bmp文件转换为png格式,谢谢!
- 各位大虾帮忙,小弟请教一个 dll 的菜鸟级问题。。
- 右键菜单
- 如何知道该加那个头文件呢?
- 还有一个简单的问题请教。在线等待!
- 请教,如果用SOAP进行webservice通信,客户端一定要装soap的SDK包吗
- Mfc程序移植问题
MessageBox Windows API.
AfxMessageBox()是全局函数两个函数的区别:AfxMessageBox比MessageBox简单一些,因为它是一个全局函数所以不需要对应的一个窗口类,但是不能控制消息框标题,常用于调试程序时的内部数据输出或警告;MessageBox比较正式,常用在要提交的应用程序版本中,可以控制标题内容而不必采用含义不明的可执行文件名为标题。如果创建的是MFC应用程序, 当然使用AfxMessageBox比较方便, 不过也能使用MessageBox,
如果创建的不是MFC应用程序, 也就不能使用MFC全局函数, 只能使用MessageBox这样的API函数了转载:http://hi.bccn.net/space-21499-do-blog-id-13015.html
AfxMessageBox()函数在任何类里边都可以使用,而MessageBox()函数只能在CWnd类的继承类中使用。afx 前缀的函数是应用程序框架类函数,全局函数,每个类都可以调用就知道这些呵呵
Messagebox()不是只能用于CWnd派生类,
将MessageBox(NULL,_T("Hello"),_T("title"),MB_OK);复制到任何一个类中测试,都可以弹出消息框.
可知与是否为Cwnd派生类无关.MessageBox有两个,一个是Windows API,就是上面的用法,
MessageBox( HWND hwnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType);另外CWnd类中有个成员函数也是MessageBox:
MessageBox( LPCTSTR lpszText,LPCTSTR lpszCaption _T(""),UINT nType = MB_OK );
只能用于CWnd派生类.
LPCTSTR pszAppName;
if (this != NULL)
pszAppName = m_pszAppName;
else
{
pszAppName = szAppName;
GetModuleFileName(NULL, szAppName, _MAX_PATH);
}
int nResult =
::MessageBox(hWnd, lpszPrompt, pszAppName, nType);
AfxMesageBox是全局函数,在哪里都能调用,只要加了Windows.h就可以了
而MessageBox则必须要在从CWnd类及其继承类里才能调用这个函数,它属于CWnd类的成员函数,因为它的继承类继承了此函数,所以肯定也能用了.
========
AfxMessageBox是全局函数,但上面说的全局是指MFC的全局函数,加windows.h可用不了.
其实楼主的问题本身就没问清楚.
AfxMessageBox是MFC的全局函数,不属于任何一个类的,MFC中以Afx开头的都是全局的.
MessageBox本身就有两个,一个API,在MFC中用时前面要写成::MessageBox,作为API,它有四个参数,少一个都不行的.
另外CWnd也有一个成员函数MessageBox.