新建TaskDemo1名称的MFC application,并且选择基于对话框的应用程序。
在stdafx.h头文件中包含一个头文件:
#include <afxtaskdialog.h> //创建消息对话框
在资源视图中添加两个字符串资源:
在对话框中删除所有插件,并且添加一个按钮为Task。右击添加事件处理程序
双击找到以下函数:
修改为以下内容:
void CTaskDemo1Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CString strMessage(L"Do you want to save your changes to the document?");//message
CString strDialogTitle(L"Save document");//消息对话框的标题
CString strMainInstruction(L"Save document options");//消息对话框的主指令
CString expandLabel(L"Hide extra information");//定义
CString collapsedLabel(L"Show extra information");
CString expansionInfo(L"You can select to save your document either as XML or binary. You should prefer to save as XML as this is the new standard format.");//扩展区的信息
//
if(CTaskDialog::IsSupported())//判断是否支持消息对话框,通过类CTaskDialog的静态函数IsSupported
{
CTaskDialog taskDialog(strMessage, strMainInstruction, strDialogTitle, TDCBF_OK_BUTTON);//创建消息对话框、任务对话框
taskDialog.SetMainIcon(TD_INFORMATION_ICON);//设置对话框的主图标
taskDialog.SetCommonButtons(TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);//设置对话框的common按钮
taskDialog.LoadCommandControls(IDS_SAVE_OPTION1,IDS_SAVE_OPTION2); //设置commandcontrols,把前边设置的字符串资源添加上。
taskDialog.SetExpansionArea(expansionInfo,collapsedLabel, expandLabel); //设置扩展区域
taskDialog.SetFooterText(L"Note: If you don't choose to save your changes will be lost");//设置底部文本
taskDialog.SetVerificationCheckboxText(L"Remember your seletion");//设置一个父选框
INT_PTR result = taskDialog.DoModal();//显示任务对话框,测试返回值
if(taskDialog.GetVerificationCheckboxState())//判断消息对话框中的父选框是否被选中
{
AfxMessageBox(L"You selectec the verification checkbox");//输出消息框
}
switch(result)//任务对话框的返回值进行判断,用switch 来判断
{
case IDS_SAVE_OPTION1://判断为第一个字符串资源
AfxMessageBox(L"You choose to save as XML");
break;
case IDS_SAVE_OPTION2://判断为第二个字符串资源
AfxMessageBox(L"You choose to save as binary");
break;
case IDNO://消息框来说明情况,单击no按钮的话
AfxMessageBox(L"You choose not to save");
break;
case IDCANCEL://如果为cancel时
AfxMessageBox(L"You choose to cancel");
break;
default://impossible case
ASSERT(FALSE);//否则是不可能的情况,直接判定出差
break;
}
}
else
AfxMessageBox(strMessage);//如果不支持任务对话框,就用消息对话框
}
设置完毕。