请问,AfxMessageBox 和 MessageBox两个函数的区别

解决方案 »

  1.   

    友情支持,三颗心关照,up~up~up~!!
      

  2.   

    AfxMessageBox MFC的
    MessageBox Windows API.
      

  3.   

    MessageBox( LPCTSTR lpszText,LPCTSTR lpszCaption = NULL,UINT nType = MB_OK );是CWnd的类成员函数:
    AfxMessageBox()是全局函数两个函数的区别:AfxMessageBox比MessageBox简单一些,因为它是一个全局函数所以不需要对应的一个窗口类,但是不能控制消息框标题,常用于调试程序时的内部数据输出或警告;MessageBox比较正式,常用在要提交的应用程序版本中,可以控制标题内容而不必采用含义不明的可执行文件名为标题。如果创建的是MFC应用程序, 当然使用AfxMessageBox比较方便, 不过也能使用MessageBox,
    如果创建的不是MFC应用程序, 也就不能使用MFC全局函数, 只能使用MessageBox这样的API函数了转载:http://hi.bccn.net/space-21499-do-blog-id-13015.html
      

  4.   

    AfxMessageBox   是MFC库提供的,提供了多种重载形式,而MessageBox是标准的windows   Api.  
     
    AfxMessageBox()函数在任何类里边都可以使用,而MessageBox()函数只能在CWnd类的继承类中使用。afx 前缀的函数是应用程序框架类函数,全局函数,每个类都可以调用就知道这些呵呵
      

  5.   


    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派生类.
      

  6.   

    AfxMessageBox 最终还是调用API MessageBox  TCHAR szAppName[_MAX_PATH];
    LPCTSTR pszAppName;
    if (this != NULL)
    pszAppName = m_pszAppName;
    else
    {
    pszAppName = szAppName;
    GetModuleFileName(NULL, szAppName, _MAX_PATH);
    }
             int nResult =
    ::MessageBox(hWnd, lpszPrompt, pszAppName, nType);
      

  7.   

    分太少了,而且他们也解释的差不多了,我就用通俗易懂的话总结一下:
    AfxMesageBox是全局函数,在哪里都能调用,只要加了Windows.h就可以了
    而MessageBox则必须要在从CWnd类及其继承类里才能调用这个函数,它属于CWnd类的成员函数,因为它的继承类继承了此函数,所以肯定也能用了.
      

  8.   

    上面说得都不错,可惜你的总结错了.AfxMesageBox是全局函数,在哪里都能调用,只要加了Windows.h就可以了
    ========
    AfxMessageBox是全局函数,但上面说的全局是指MFC的全局函数,加windows.h可用不了.
    其实楼主的问题本身就没问清楚.
    AfxMessageBox是MFC的全局函数,不属于任何一个类的,MFC中以Afx开头的都是全局的.
    MessageBox本身就有两个,一个API,在MFC中用时前面要写成::MessageBox,作为API,它有四个参数,少一个都不行的.
    另外CWnd也有一个成员函数MessageBox.
      

  9.   

    不管用messagebox还是AFXmessagebox,弹出的对话框都会修改程序的标题栏显示内容为可执行文件的名字,但是按下ok以后,标题栏又会变回以前的?这是为什么?