演练:CTaskDialog添加到应用程序
本演练介绍 CTaskDialog 类 并演示如何添加到您的应用程序。
CTaskDialog 是将在 Windows Vista的 windows 消息框的任务对话框。CTaskDialog 提高原始消息框并添加功能。windows 消息框。 Visual Studio仍支持。
说明 |
---|
窗口的版本早于 Windows Vista 不支持 CTaskDialog。必须程序可选对话框选项,如果要显示消息传送到运行您在 windows 的早期版本的应用程序的用户。您可以使用静态方法 CTaskDialog::IsSupported 确定运行时用户的计算机是否可以显示 CTaskDialog。此外,在中,当应用程序使用 Unicode 库时,生成 CTaskDialog 才可用。 |
CTaskDialog 支持多个可选的元素集合并显示信息。例如, CTaskDialog 可以显示命令链接、自定义的按钮、自定义的图标和页脚。CTaskDialog 还可以查询任务对话框状态确定的方法的可选元素用户已选定。
系统必备
您需要以下组件来完成本演练:
Visual Studio 2010
Windows Vista
替换 " 窗口消息框。 CTaskDialog
下面的过程演示如何 CTaskDialog的最基本用法,是将 windows 消息框。此示例还更改图标与任务对话框。更改图标进行 CTaskDialog 显示相同到 windows 消息框。
使用 CTaskDialog 替换 " 窗口消息框
使用默认设置创建新 MFC 应用程序项目。调用该 MyProject。
使用 解决方案资源管理器 打开文件 MyProject.cpp。
,在列表中包括后面,添加 #include "afxtaskdialog.h" 。
找到方法 CMyProjectApp::InitInstance。插入下面的代码行。 return TRUE; 语句之前的。此代码创建我们使用 windows 消息框或在 CTaskDialog的字符串。
CString message("My message to the user"); CString dialogTitle("My Task Dialog title"); CString emptyString;
在代码后面添加以下代码以从步骤。此代码可确保用户的计算机支持 CTaskDialog。如果对话框,不支持应用程序显示窗口消息框。
if (CTaskDialog::IsSupported()) { } else { AfxMessageBox(message); }
插入在括号内的代码在从步骤的 if 语句之后。此代码创建 CTaskDialog。
CTaskDialog taskDialog(message, emptyString, dialogTitle, TDCBF_OK_BUTTON);
在下一行,添加以下代码。此代码将警告图标。
taskDialog.SetMainIcon(TD_WARNING_ICON);
在下一行,添加以下代码。此代码将显示任务对话框。
taskDialog.DoModal();
您可以忽略步骤 7 中,如果您不希望 CTaskDialog 显示与 windows 消息框的图标。如果省略该步骤, CTaskDialog 没有图标,当应用程序显示它。
编译并运行应用程序。,在启动后,应用程序显示一个任务对话框。
将功能添加到 CTaskDialog
下面的过程演示如何将功能添加到您在前一过程中创建的 CTaskDialog 。代码示例演示如何执行基于用户选择的特定命令。
将功能添加到 CTaskDialog
导航到 资源视图。如果看不到 资源视图,可以打开它从 查看 菜单。
展开 资源视图 ,直到您可以选择 字符串表 文件夹。展开并双击 字符串表 项。
为字符串表底部的滚动并添加新项。更改 ID 到 TEMP_LINE1。将阐释命令行 1。
添加另一个新项。更改 ID 到 TEMP_LINE2。将阐释命令行 2。
导航到 MyProject.cpp。
在 CString emptyString;之后,添加以下代码:
CString expandedLabel("Hide extra information"); CString collapsedLabel("Show extra information"); CString expansionInfo("This is the additional information to the user,\nextended over two lines.");
查找 taskDialog.DoModal() 语句然后用以下代码替换语句。此代码将更新任务对话框并添加新控件:
taskDialog.SetMainInstruction(L"Warning"); taskDialog.SetCommonButtons(TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON); taskDialog.LoadCommandControls(TEMP_LINE1, TEMP_LINE2); taskDialog.SetExpansionArea(expansionInfo, collapsedLabel, expandedLabel); taskDialog.SetFooterText(L"This is the a small footnote to the user"); taskDialog.SetVerificationCheckboxText(L"Remember your selection");
将显示任务对话框向用户和检索用户的选择以下代码行:
INT_PTR result = taskDialog.DoModal();
插入在调用后以下代码以 taskDialog.DoModal()。代码的本节处理用户输入:
if (taskDialog.GetVerificationCheckboxState() ) { // PROCESS IF the user selects the verification checkbox } switch (result) { case TEMP_LINE1: // PROCESS IF the first command line break; case TEMP_LINE2: // PROCESS IF the second command line break; case IDYES: // PROCESS IF the user clicks yes break; case IDNO: // PROCESS IF the user clicks no break; case IDCANCEL: // PROCESS IF the user clicks cancel break; default: // This case should not be hit because closing the dialog box results in IDCANCEL break; }
在第 9 步中的代码,请替换请启动进程,如果从代码要在指定的条件下执行的注释。
编译并运行应用程序。应用程序以使用新的控件和附加信息的任务对话框。
演示 CTaskDialog,而无需创建 CTaskDialog 对象
下面的过程演示如何显示 CTaskDialog ,而无需先创建 CTaskDialog 对象。此示例继续前一过程。
演示 CTaskDialog,而无需创建 CTaskDialog 对象
,如果尚未打开,请打开 MyProject.cpp 文件。
导航到 if (CTaskDialog::IsSupported()) 语句的结束括号。
插入到 if 语句的结束括号的之前下面的代码 (在 else 之前块):
HRESULT result2 = CTaskDialog::ShowDialog(L"My error message", L"Error", L"New Title", TEMP_LINE1, TEMP_LINE2);
编译并运行应用程序。应用程序显示两个任务对话框。第一个对话框是从添加功能为 CTaskDialog 程序;第二个对话框是从最后一个过程。
这些示例不演示 CTaskDialog的所有可用选项,,而应帮助您入门。提供类的完整说明参见 CTaskDialog 类 。