一、消息对话框主要是两种CWnd::MessageBox()和AfxMessageBox(),下面是在按钮点击事件中添加MessageBox的效果,如下:
void Ctest02Dlg::OnBnClickedAddButton()
{
// TODO: 在此添加控件通知处理程序代码
// TODO: Add your control notification handler code here
INT_PTR nRes;
// 显示消息对话框
nRes = MessageBox(_T("您确定要进行加法计算吗?"), _T("加法计算器"), MB_OKCANCEL | MB_ICONQUESTION);
// 判断消息对话框返回值。如果为IDCANCEL就return,否则继续向下执行
if (IDCANCEL == nRes)
return;
// 将各控件中的数据保存到相应的变量
UpdateData(TRUE);
// 将被加数和加数的加和赋值给m_editSum
m_editSum = m_editSummand + m_editAddend;
// 根据各变量的值更新相应的控件。和的编辑框会显示m_editSum的值
UpdateData(FALSE);
// 设置属性对话框为向导对话框
//sheet.SetWizardMode();
}
点击计算,实现效果如下,实现模态对话框:
二、文件对话框
参考博客:VS2010/MFC编程入门之十七(对话框:文件对话框)-软件开发-鸡啄米
1、首先创建个mfc的test03应用程序解决方案,如下:
2、然后找到对话框模板,删除掉界面中默认的控件,然后拖动两个Static Text ,两个Button在界面上,更改Static中的ID分别为:IDC_OPEN_EDIT和IDC_SAVE_EDIT,两个按钮的ID分别为:
IDC_OPEN_BUTTON和IDC_SAVE_BUTTON,Caption分别为,打开和保存
3、分别双击打开按钮和保存按钮,添加事件函数,然后在函数里添加如下:
void Ctest03Dlg::OnBnClickedOpenButton()
{
// TODO: 在此添加控件通知处理程序代码
TCHAR szFilter[] = _T("文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||");
// 构造打开文件对话框
CFileDialog fileDlg(TRUE, _T("txt"), NULL, 0, szFilter, this);
CString strFilePath;
// 显示打开文件对话框
if (IDOK == fileDlg.DoModal())
{
// 如果点击了文件对话框上的“打开”按钮,则将选择的文件路径显示到编辑框里
strFilePath = fileDlg.GetPathName();
SetDlgItemText(IDC_OPEN_EDIT, strFilePath);
}
}
void Ctest03Dlg::OnBnClickedSaveButton()
{
// TODO: 在此添加控件通知处理程序代码
// 设置过滤器
TCHAR szFilter[] = _T("文本文件(*.txt)|*.txt|Word文件(*.doc)|*.doc|所有文件(*.*)|*.*||");
// 构造保存文件对话框
CFileDialog fileDlg(FALSE, _T("doc"), _T("my"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, this);
CString strFilePath;
// 显示保存文件对话框
if (IDOK == fileDlg.DoModal())
{
// 如果点击了文件对话框上的“保存”按钮,则将选择的文件路径显示到编辑框里
strFilePath = fileDlg.GetPathName();
SetDlgItemText(IDC_SAVE_EDIT, strFilePath);
}
}
4、最终实现效果如下: