照书做个简单程序,菜单上增加一个菜单项,按一下就会弹出个对话框,上面写着“菜单快捷实例”。
填写的成员函数:
void CMenuAcceDoc::OnMenuacce() 
{
// TODO: Add your command handler code here
MessageBox("菜单快捷实例");
}
抱错:error C2660: 'MessageBoxA' : function does not take 1 parameters
Error executing cl.exe.
我把MessageBox改为MessageBoxA,同样的报错信息。
搞不懂,请大虾指点一二。

解决方案 »

  1.   

    对,楼上的说得对。对于不同的Windows平台(Win9X<->WinNT)最终调用的SDK函数是不同的。
      

  2.   

    你好。改为AfxMessageBox后倒是不报错了,但是新菜单也不起作用了。
    我的错误是如何引起的呢?大虾能否告之,不胜感激。
      

  3.   

    MessageBox(("菜单快捷实例",NULL,MB_OK);
      

  4.   

    int MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK );
      

  5.   

    文挡类不是从CWnd派生,而MessageBox是CWnd类的成员函数.所以,你在Doc中调用MessageBox肯定会有问题.AfxMessageBox是框架函数,可在任何地方调用,所以,你应该使用::AfxMessageBox.如果还有问题,你要检查一下其它地方是否弄错了.
      

  6.   

    应该是没有执行到这个函数,你自己好好看看仔细看看你有没有添加消息处理ON_COMMAND(IDC_XXXX_XXXX, OnMenuacce)
      

  7.   

    AfxMessageBox模式对话框,弹出后,消息循环阻塞了
      

  8.   

    MessageBoxA方法就是MessageBox方法的ASCII版本如果是API方式,MessageBox的参数不只一个如果是MFC
      MessageBox函数是CWnd的方法,可以这么用  看你的类既然叫CMenuAcceDoc,我猜是继承自CDocument(搂主没说明),CDocument不是继承自CWnd的,因此没有MessageBox方法.如果直接调用MessageBox,这里我不太明白,这时系统到底是调用的哪个MessageBox方法呢?  改成AfxMessageBox是调用全局函数.我以前遇到过这种问题,新菜单不是不起作用了,只是谈出来的消息盒你没看到而已.用AfxMessageBox由于没有父窗口,因此弹出来的窗口是最上层的,可能会被程序的窗口档住,你把程序窗口拖动以下,应该就能看到弹出的box了吧.
      

  9.   

    我说的不起作用是指新菜单按钮中,字跟背景颜色是一样的,根本按不了。
    想不到真有MessageBoxA方法。
    谢谢大家。
    还有吗,请大家畅所欲言,就在这相互交流一下吧。
      

  10.   

    有没有添加消息处理ON_COMMAND(IDC_XXXX_XXXX, OnMenuacce)菜单没有添加事件 就是灰色。用AfxMessageBox较好
      

  11.   

    我知道了,我应该继承CMenuAcceView类。
      

  12.   

    MessageBox("菜单快捷实例");
    调用api中的messagebox
      

  13.   

    我总结一下吧,其实我的程序很简单的,只加了一个菜单项。对应的处理函数是OnMenuacce(),但是应该继承视图类(也许还有启明星说的窗口类,不过我的程序加不了,我是新手,见谅),这时一切正常。
    文档类估计是没有MessageBox方法,所以系统误认为我用的是多参数的MessageBox方法,出现上面的报错信息。
    文档类下用AfxMessageBox确实是出现灰色的。原因可能是没有
    ON_COMMAND(IDC_XXXX_XXXX, OnMenuacce),不过我不知道该加到哪个文件中?IDC_XXXX_XXXX指的是不是我添加的按钮ID?