第六次作业
参考资料:
1、MFC打开文件对话框
2、VS2010/MFC编程入门教程
3、关于计算器响应键盘消息及虚拟键
过程:刚开始不知道要怎么做就就去看了vsMFC编程入门,这是同学推荐我去看的,然后用vs MFC画出计算器的界面。画好界面后就是写按钮的响应事件,响应事件要一个一个的写,下面我们看其中的一个 ,其他的以此类推:
void CcalaulatorDlg::OnBnClickedButton14()
{
// TODO: 在此添加控件通知处理程序代码
CString str;
GetDlgItem(IDC_EDIT1)->GetWindowText(str);
if (str == "ERROR") //if......else .... 用来是否已经计算过了 如果有 当你输入的时候,清空原来编辑框上的消息 然后再加上字符
{
str = "";
}
else {
for (int i = 0; i < str.GetLength(); i++)
{
if (str[i] == '=')
{
str = "";
break;
}
}
}
str += '8';
GetDlgItem(IDC_EDIT1)->SetWindowText(str);
}
大概就是那样了,当我们出发“=”时就直接跳入计算,计算前我们得把原来的代码以类的形式添加到这个工程进来,然后调用它
void CcalaulatorDlg::OnBnClickedButton20()
{
//等号的时候
// TODO: 在此添加控件通知处理程序代码
CString str,a;
GetDlgItem(IDC_EDIT1)->GetWindowText(str);
if (str == "ERROR")
{
str = "";
}
else {
for (int i = 0; i < str.GetLength(); i++)
{
if (str[i] == '=')
{
str = "";
break;
}
}
}
if (str != "")
{
a = str;
a += '=';
str = "";
CT2CA pszConvertedAnsiString(a); // 将 TCHAR 转换为 LPCSTR
string input(pszConvertedAnsiString); // 从 LPCSTR 构造 string
queue<string>key;
Scan KFC;
Calculator calcu;
key = KFC.ToStringQueue(input);
if (KFC.judge())
{
double s;
string tmp;
stringstream ss;
s = calcu.Calculation(key);
ss << s;
ss >> tmp;
a += tmp.c_str();
}
else {
a = "ERROR";
}
GetDlgItem(IDC_EDIT1)->SetWindowText(a);
}
}
接下来就是批量处理了,我们输入途径要有两种,一种是键盘输入,一种是选择路径;
第一次更新:
选择路径代码如下:
void CcalaulatorDlg::OnBnClickedButton22()
{
// TODO: 在此添加控件通知处理程序代码
CString gReadFilePathName;
CFileDialog fileDlg(true, _T("txt"), _T("*.txt"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("txt Files (*.txt)|*.tx|All File (*.*)|*.*||"), NULL);
if (fileDlg.DoModal() == IDOK) //弹出对话框
{
gReadFilePathName = fileDlg.GetPathName();//得到完整的文件名和目录名拓展名
GetDlgItem(IDC_EDIT2)->SetWindowText(gReadFilePathName);//将路径显示
CString filename = fileDlg.GetFileName();
}
}
第二次更新
键盘输入弄好啦;
界面如图:
最后:界面是有点丑 ,但是后面改一改应该可以好看点 哈哈哈!!!!