问题:
在MFC程序CMenuApp中调用 MessageBox("success!");时候,出现错误提示:
'MessageBoxA' : function does not take 1 parameter
解决办法:
调用与之类似的另一个函数,AfxMessageBox
于是:AfxMessageBox("success!");运行正确通过。
原理:
AfxMessageBox()与MessageBox()的区别:
两个函数的区别:AfxMessageBox比MessageBox简单一些,因为它是一个全局函数所以不需要对应的一个窗口类,但是不能控制消息框标题,常用于调试程序时的内部数据输出或警告;MessageBox比较正式,常用在要提交的应用程序版本中,可以控制标题内容而不必采用含义不明的可执行文件名为标题。
此问题还有另外一种解决办法,而且这种办法比较好,是公认的好办法
MessageBox的执行需要在一个窗体下
在没有窗体或者全局函数中,他必须传入一个窗体句柄才可能执行,如果没有,用NULL代替也可,但是此时该消息框属于桌面,可能达不到我们所需要的目的,所以一般要传入一个窗口句柄。
所以又有了另一种解决办法:
MessageBox函数:四个参数,依次如下:
hWnd:
指定该对话框的所有者窗口。如果该参数为空(0),则该对话框不属于任何窗口(?)。
lpText:
显示在对话框中的消息。
lpCaption:
在对话框标题栏中显示的字符串表达式。如果该参数为空(vbNullString),则使用默认的“错误”作为对话框的标题。
wType:
指定显示按钮的数目及形式,使用的图标样式,缺省按钮是什么以及消息框的强制回应等。可以为下列常数之一或某几个数值相加的和。
指定按钮样式:
MB_ABORTRETRYIGNORE
显示 Abort、Retry 及 Ignore 按钮。
MB_OK
只显示 OK 按钮。(默认)
MessageBox(NULL,"success","OK",MB_ABORTRETRYIGNORE);
注意:其中success是需要显示的字符串,OK是提示框的标题,NULL代表桌面消息框