刚才还好好的程序,运行好几百次都没问题, 刚才打开突然
MessageBox突然报错,这是什么原因??
error C2660: 'MessageBoxA' : function does not take 2 parameters

解决方案 »

  1.   

    补充
    这样调用的:
    MessageBox( "数据读取失败", "操作失败" );
      

  2.   

    MessageBox(NULL, "数据读取失败", "操作失败" , NULL);
      

  3.   

    应该没有问题的!
    重新完全编译一遍吧!
    或者,MessageBox( "数据读取失败", "操作失败",0);这种情况的设置可能是你改变了编译环境。
      

  4.   

    估计你是在全局函数或非CWnd子类的成员函数中调用的MessageBox
    这样的话得用楼上所说的这样
    CWnd成员函数Messagebox不需要第一个参数HWND,而全局函数是要的
      

  5.   

    这个不是出错的原因,  MessageBox( "数据读取失败", "操作失败" );
    可以这样用 , 但为什么突然出错?? 没人知道吗?
      

  6.   

    你把原来的MessageBox换成::MessageBox了
      

  7.   

    MessageBox在哪里写的?
    AfxMessageBox试试MessageBox("数据读取失败", MB_OK);
      

  8.   

    如果在CWnd类或其派生类中使用MessageBox,使用的是CWnd类中的MessageBox成员函数:
    int MessageBox(
       LPCTSTR lpszText,
       LPCTSTR lpszCaption = NULL,
       UINT nType = MB_OK 
    );
    因为定义了默认参数,所以参数个数可以是1~3个。如果在其它地方使用,或者前面加::,使用的是User32.dll中的MessageBox函数:
    int MessageBox(
        HWND hWnd,
        LPCTSTR lpText,
        LPCTSTR lpCaption,
        UINT uType
    );
    必须给出4个参数。
      

  9.   

    NO, 我所有的MessageBox报错,
    全局函数或非CWnd子类的成员函数可以用AfxMessageBox或::MessageBox
      

  10.   

    程序起先运行没有错误可以正常运行, MessageBox并无错误,
    就是刚才突然打开程序,200多个MessageBox都报错,有没有可能如arvid_gs
    所说,改变了编译环境?
      

  11.   

    那就换AfxMessageBox("数据读取失败")试试.
      

  12.   

    1、试AfxMessageBox();
    2、CWnd的成员函数MessageBox(),3个参数;其他地方用MessageBox(NULL, "", "", MB_OK);
    3、重新编译
      

  13.   

    你的MessageBox是不是在自己写的类中调用的?
      

  14.   

    恩  不全是,  
       不管在哪用都出错,MainFrame中也出错
      

  15.   

    作用域范围的问题,在CWnd继承类中,不加作用域限制符::表示调用CWnd::MessageBox,加了表示调用API函数::MessageBox,这两种调用参数不同。编程是很严谨的事,不会随机出错。
      

  16.   

    void CMainFrame::OnClose()
    {
       MessageBox( "数据读取失败", "操作失败",0); 
    }
    在这也一样出错,这是作用域的问题吗?
      

  17.   

    public: int __thiscall CWnd::AfxMessageBox(char const *,char const *,unsigned int)" (?AfxMessageBox@CWnd@@QAEHPBD0I@Z)这是什么错误?
      

  18.   

     MessageBox( "数据读取失败", "操作失败",0);
    全部改成 MessageBox(NULL, "数据读取失败", "操作失败",MB_OK);
    却报这样的错误,昏死!
    UserView.obj : error LNK2001: unresolved external symbol "public: int __thiscall CWnd::AfxMessageBox(char const *,char const *,unsigned int)" (?AfxMessageBox@CWnd@@QAEHPBD0I@Z)
      

  19.   

    全部改成 ::MessageBox(NULL, "数据读取失败", "操作失败", MB_OK);
      

  20.   

    就是改成了::MessageBox(NULL, "数据读取失败", "操作失败", MB_OK);
    就报以上错误
      

  21.   

    将MessageBox全部屏蔽..
    再执行.程序出现异常确定问题不在MessageBox上, 哪位高人知道这是什么原因?/
    可以再+100分.
      

  22.   

    26楼的错误,你在UserView中搜索一下AfxMessageBox,右击鼠标转到声明,把AfxMessageBox的声明注释掉。CWnd类中没有AfxMessageBox这个成员函数。你在前面只提到了MessageBox,没有其它信息,没法分析程序异常的原因。
      

  23.   

    这个问题是这样出现的:
    先将工程的.dsw文件拖至VC6.0的快捷方式打开工程, 工程不要关闭
    再次将工程的.dsw文件拖至VC6.0的快捷方式打开工程, 发现第二次打开的类视图是 0 files
    最后将第二次打开的工程Rebild All
    以上问题就出现了..这个问题怎么解决??高高手们, 拜托了!
      

  24.   

    既然出现 .obj : error LNK2001 是因为有声明没定义的,多数你之前可能曾经修改过函数声明定义.有时修改过后就算还原了也都会出错~ 你说你关了再开了都一样错误吧~
    你可能都没试过~"重新生成XX" 在"生成(B)"的选项有,,不过怎样都要试一试~  如果你已经试过了,那我就不知道原因了
      

  25.   

    可以确定不是MessageBox的错误!!
      

  26.   

    哦~又有更新?试把~其他文件都删了,保留最基本的.cpp,.h, .dsw ,RES文件等~之后再重新打开程序咯~ (最基本的了~我所知道
      

  27.   

    MessageBox(NULL, _T("数据读取失败"), _T("操作失败"), MB_OK);试一下