void formula(CString strtxt)
{
used=0; pr=0;
for ( int i=0; i<strtxt.GetLength(); i++)
{
char ch=strtxt.GetAt(i);
if(ch=='0'||ch=='1')
{
/* if(i>=1)
{char ch1=strtxt.GetAt(i-1);
if(ch1=='0'||ch1=='1')
{
// MessageBox(" 表达式输入错误,请重新输入!");
return;
}
}
*/
argt=ch-'0';
num.push(argt);
continue;
} else if(ch=='+'||ch=='*')
{
/* if(i>=1)
{char ch1=strtxt.GetAt(i-1);
if(ch1=='+'||ch1=='*')
{
//MessageBox(" 表达式输入错误,请重新输入!");
return;}
}
*/ if(oper.empty()||oper.top()=='(')
oper.push(ch);
else
{
while (!Prr(ch,oper.top()))
{
Cal(num, oper);
if(oper.empty()||oper.top=='(')
break;
}
oper.push(ch);
continue;
}
}
else if(ch=='(')
{
pr++; oper.push(ch);
continue;
}
else if (ch==')')
{
pr--;
while (!oper.empty())
{
if(oper.top()=='(')
break;
Cal(num, oper);
}
oper.pop();
continue;
}
else
{
// ::MessageBox(" 表达式输入错误,请重新输入!");
return;}
}
}void CTest06182Dlg::OnButton1()
{
CString strtxt1;
GetDlgItem(IDC_EDIT1)->GetWindowText(strtxt1);
formula(strtxt1);
if (!pr)
//MessageBox("括号数目不匹配,请检查并重新输入!");
{
while (!oper.empty()) Cal(num,oper);
CString str;
str.Format("%5d",num.top());
GetDlgItem(IDC_EDIT2)->SetWindowText(str);
}
else
MessageBox("括号数目不匹配,请检查并重新输入!");
}
上面是我程序的一部分,当我在自己定义的
void formula(CString strtxt)函数中用MessageBox()函数时,总是提示错误,该怎么解决啊,谢谢各位指点!
{
used=0; pr=0;
for ( int i=0; i<strtxt.GetLength(); i++)
{
char ch=strtxt.GetAt(i);
if(ch=='0'||ch=='1')
{
/* if(i>=1)
{char ch1=strtxt.GetAt(i-1);
if(ch1=='0'||ch1=='1')
{
// MessageBox(" 表达式输入错误,请重新输入!");
return;
}
}
*/
argt=ch-'0';
num.push(argt);
continue;
} else if(ch=='+'||ch=='*')
{
/* if(i>=1)
{char ch1=strtxt.GetAt(i-1);
if(ch1=='+'||ch1=='*')
{
//MessageBox(" 表达式输入错误,请重新输入!");
return;}
}
*/ if(oper.empty()||oper.top()=='(')
oper.push(ch);
else
{
while (!Prr(ch,oper.top()))
{
Cal(num, oper);
if(oper.empty()||oper.top=='(')
break;
}
oper.push(ch);
continue;
}
}
else if(ch=='(')
{
pr++; oper.push(ch);
continue;
}
else if (ch==')')
{
pr--;
while (!oper.empty())
{
if(oper.top()=='(')
break;
Cal(num, oper);
}
oper.pop();
continue;
}
else
{
// ::MessageBox(" 表达式输入错误,请重新输入!");
return;}
}
}void CTest06182Dlg::OnButton1()
{
CString strtxt1;
GetDlgItem(IDC_EDIT1)->GetWindowText(strtxt1);
formula(strtxt1);
if (!pr)
//MessageBox("括号数目不匹配,请检查并重新输入!");
{
while (!oper.empty()) Cal(num,oper);
CString str;
str.Format("%5d",num.top());
GetDlgItem(IDC_EDIT2)->SetWindowText(str);
}
else
MessageBox("括号数目不匹配,请检查并重新输入!");
}
上面是我程序的一部分,当我在自己定义的
void formula(CString strtxt)函数中用MessageBox()函数时,总是提示错误,该怎么解决啊,谢谢各位指点!
HWND hWnd,
LPCTSTR lpText,
LPCTSTR lpCaption,
UINT uType
);你用的是 CWnd::MessageBox(
LPCTSTR lpszText,
LPCTSTR lpszCaption = NULL,
UINT nType = MB_OK
);改成 MessageBox(NULL, "括号数目不匹配,请检查并重新输入!"); 就OK
error C2660: 'MessageBoxA' : function does not take 2 parameters
这种错?
不好意思,我刚接触VC不久
error C2660: 'MessageBoxA' : function does not take 2 parameters
这种错?
不好意思,我刚接触VC不久
AfxMessageBox("括号数目不匹配,请检查并重新输入!", ");
{...
if(i>=1)
{char ch1=strtxt.GetAt(i-1);
if(ch1=='+'||ch1=='*')
{
AfxMessageBox("表达式输入错误,请重新输入!", MB_OK,0);
return;}
...
}
我改成:AfxMessageBox("表达式输入错误,请重新输入!", MB_OK,0)后,好像还是崩溃,点击确定后,出现一个窗,说.exe文件遇到问题,需要关闭.
为什么啊?
搞得我都快崩溃了
//MessageBox("括号数目不匹配,请检查并重新输入!"); -->
if (!pr)
{
//MessageBox("括号数目不匹配,请检查并重新输入!");
return;
}
messagebox一般用于返回个值
是这样吧?