共用方式為


CTaskDialog 類別

功能像訊息方塊,但是可向使用者顯示其他資訊的快顯對話方塊。 CTaskDialog 也包含從使用者收集資訊的功能。

語法

class CTaskDialog : public CObject

成員

建構函式

名稱 描述
CTaskDialog::CTaskDialog 建構 CTaskDialog 物件。

方法

名稱 描述
CTaskDialog::AddCommandControl 將命令按鈕控制項新增至 CTaskDialog
CTaskDialog::AddRadioButton 將單選按鈕新增至 CTaskDialog
CTaskDialog::ClickCommandControl 按兩下命令按鈕控制件或以程式設計方式的通用按鈕。
CTaskDialog::ClickRadioButton 以程式設計方式按下按下按鍵。
CTaskDialog::D oModal 顯示CTaskDialog
CTaskDialog::GetCommonButtonCount 擷取可用的通用按鈕數目。
CTaskDialog::GetCommonButtonFlag 將標準 Windows 按鈕轉換成與 CTaskDialog 類別相關聯的通用按鈕類型。
CTaskDialog::GetCommonButtonId 將與 CTaskDialog 類別相關聯的其中一個通用按鈕類型轉換為標準 Windows 按鈕。
CTaskDialog::GetOptions 傳回這個 CTaskDialog的選項旗標。
CTaskDialog::GetSelectedCommandControlID 傳回選取的命令按鈕控制件。
CTaskDialog::GetSelectedRadioButtonID 傳回選取的單選按鈕。
CTaskDialog::GetVerificationCheckboxState 擷取 [驗證] 複選框的狀態。
CTaskDialog::IsCommandControlEnabled 判斷是否啟用命令按鈕控制件或通用按鈕。
CTaskDialog::IsRadioButtonEnabled 判斷是否啟用單選按鈕。
CTaskDialog::IsSupported 判斷執行應用程式的電腦是否支援 CTaskDialog
CTaskDialog::LoadCommandControls 使用字串數據表中的數據來新增命令按鈕控制件。
CTaskDialog::LoadRadioButtons 使用字串數據表中的數據新增單選按鈕。
CTaskDialog::NavigateTo 將焦點傳輸到另一個 CTaskDialog
CTaskDialog::OnCommandControlClick 當使用者按下命令按鈕控制項時,架構會呼叫此方法。
CTaskDialog::OnCreate 架構會在建立 CTaskDialog之後呼叫這個方法。
CTaskDialog::OnDestroy 架構會在終結 CTaskDialog之前立即呼叫這個方法。
CTaskDialog::OnExpandButtonClick 當使用者按兩下展開按鈕時,架構會呼叫此方法。
CTaskDialog::OnHelp 當使用者要求協助時,架構會呼叫此方法。
CTaskDialog::OnHyperlinkClick 當使用者按兩下超連結時,架構會呼叫此方法。
CTaskDialog::OnInit 架構會在 初始化時 CTaskDialog 呼叫這個方法。
CTaskDialog::OnNavigatePage 當使用者在上的 CTaskDialog控件上移動焦點時,架構會呼叫此方法。
CTaskDialog::OnRadioButtonClick 當使用者選取單選按鈕控制項時,架構會呼叫此方法。
CTaskDialog::OnTimer 架構會在定時器到期時呼叫這個方法。
CTaskDialog::OnVerificationCheckboxClick 當使用者按兩下 [驗證] 複選框時,架構會呼叫此方法。
CTaskDialog::RemoveAllCommandControls 從 移除所有命令控制件 CTaskDialog
CTaskDialog::RemoveAllRadioButtons 從移除所有單選按鈕 CTaskDialog
CTaskDialog::SetCommandControlOptions 更新上的 CTaskDialog命令按鈕控制件。
CTaskDialog::SetCommonButtonOptions 更新要啟用且需要UAC提高許可權的通用按鈕子集。
CTaskDialog::SetCommonButtons 將一般按鈕新增至 CTaskDialog
CTaskDialog::SetContent 更新的內容 CTaskDialog
CTaskDialog::SetDefaultCommandControl 指定預設命令按鈕控制件。
CTaskDialog::SetDefaultRadioButton 指定預設單選按鈕。
CTaskDialog::SetDialogWidth 調整的 CTaskDialog寬度。
CTaskDialog::SetExpansionArea 更新的 CTaskDialog擴充區域。
CTaskDialog::SetFooterIcon 更新的 CTaskDialog頁尾圖示。
CTaskDialog::SetFooterText 更新 頁尾 CTaskDialog上的文字。
CTaskDialog::SetMainIcon 更新 的主要圖示 CTaskDialog
CTaskDialog::SetMainInstruction 更新 的主要指示 CTaskDialog
CTaskDialog::SetOptions 設定的選項 CTaskDialog
CTaskDialog::SetProgressBarMarquee 設定的選框列 CTaskDialog ,並將其新增至對話框。
CTaskDialog::SetProgressBarPosition 調整進度列的位置。
CTaskDialog::SetProgressBarRange 調整進度列的範圍。
CTaskDialog::SetProgressBarState 設定進度列的狀態,並在上 CTaskDialog顯示它。
CTaskDialog::SetRadioButtonOptions 啟用或停用單選按鈕。
CTaskDialog::SetVerificationCheckbox 設定驗證複選框的核取狀態。
CTaskDialog::SetVerificationCheckboxText 設定驗證複選框右側的文字。
CTaskDialog::SetWindowTitle 設定的 CTaskDialog標題。
CTaskDialog::ShowDialog 建立並顯示 CTaskDialog
CTaskDialog::TaskDialogCallback 架構會呼叫此專案,以回應各種 Windows 訊息。

資料成員

名稱 描述
m_aButtons 的命令按鈕控制件 CTaskDialog數位。
m_aRadioButtons 的單選按鈕控制件 CTaskDialog數位。
m_bVerified TRUE 表示已核取驗證複選框; FALSE 表示它不是。
m_footerIcon 頁尾 CTaskDialog中的圖示。
m_hWnd 視窗的 CTaskDialog句柄。
m_mainIcon 的主要圖示 CTaskDialog
m_nButtonDisabled 遮罩,指出哪些通用按鈕已停用。
m_nButtonElevation 表示哪些通用按鈕需要 UAC 提高許可權的遮罩。
m_nButtonId 所選取命令按鈕控制件的識別碼。
m_nCommonButton 遮罩,指出哪些通用按鈕會顯示在 CTaskDialog上。
m_nDefaultCommandControl 顯示時 CTaskDialog 選取之命令按鈕控制件的識別碼。
m_nDefaultRadioButton 顯示時 CTaskDialog 所選取單選按鈕控件的識別碼。
m_nFlags 表示 選項的 CTaskDialog遮罩。
m_nProgressPos 進度列的目前位置。 這個值必須介於 m_nProgressRangeMinm_nProgressRangeMax 之間。
m_nProgressRangeMax 進度列的最大值。
m_nProgressRangeMin 進度列的最小值。
m_nProgressState 進度列的狀態。 如需詳細資訊,請參閱 CTaskDialog::SetProgressBarState
m_nRadioId 所選單選按鈕控制件的標識碼。
m_nWidth 以像素為單位的 CTaskDialog 寬度。
m_strCollapse 隱藏展開資訊時,展開方塊右邊顯示的字串 CTaskDialog
m_strContent 的內容字串 CTaskDialog
m_strExpand 顯示展開資訊時,展開方塊右邊顯示的字串 CTaskDialog
m_strFooter 的頁尾 CTaskDialog
m_strInformation 的展開資訊 CTaskDialog
m_strMainInstruction 的主要指示 CTaskDialog
m_strTitle CTaskDialog標題。
m_strVerification 顯示在 [驗證] 複選框右邊的字串 CTaskDialog

備註

類別 CTaskDialog 會取代標準 Windows 消息框,並具有其他功能,例如從使用者收集資訊的新控件。 這個類別位於Visual Studio 2010和更新版本的MFC連結庫中。 CTaskDialog從 Windows Vista 開始提供 。 舊版 Windows 無法顯示 CTaskDialog 物件。 用來 CTaskDialog::IsSupported 判斷目前使用者是否可以在運行時間顯示工作對話框。 仍然支援標準 Windows 消息框。

CTaskDialog只有在您使用 Unicode 連結庫建置應用程式時,才能使用 。

CTaskDialog有兩個不同的建構函式。 一個建構函式可讓您指定兩個命令按鈕,以及最多六個一般按鈕控件。 建立 之後 CTaskDialog,您可以新增更多命令按鈕。 第二個建構函式不支援任何命令按鈕,但您可以新增無限數量的一般按鈕控件。 如需建構函式的詳細資訊,請參閱 CTaskDialog::CTaskDialog

下圖顯示範例 CTaskDialog ,說明一些控件的位置。

CTaskDialog 的範例。
CTaskDialog 範例

需求

最低必要操作系統: Windows Vista

標頭: afxtaskdialog.h

CTaskDialog::AddCommandControl

將新的指令按鈕控制項新增至 CTaskDialog

void AddCommandControl(
    int nCommandControlID,
    const CString& strCaption,
    BOOL bEnabled = TRUE,
    BOOL bRequiresElevation = FALSE);

參數

nCommandControlID
[in]命令控件識別碼。

strCaption
[in]向用戶顯示的字串 CTaskDialog 。 使用此字串來說明命令的用途。

bEnabled
[in]布爾參數,指出是否啟用或停用新按鈕。

bRequiresElevation
[in]布爾參數,指出命令是否需要提高許可權。

備註

CTaskDialog Class可以顯示無限數量的命令按鈕控制件。 不過,如果 CTaskDialog 顯示任何命令按鈕控件,則最多可以顯示六個按鈕。 CTaskDialog如果沒有命令按鈕控制件,它可以顯示不限數量的按鈕。

當使用者選擇命令按鈕控制時,會 CTaskDialog 關閉 。 如果您的應用程式使用 CTaskDialog::D oModal 顯示對話框, DoModal 則會傳回 所選命令按鈕控件的 nCommandControlID

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title.
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

taskDialog.AddCommandControl(201, L"First command button control");
taskDialog.AddCommandControl(202, L"Second command button control");
taskDialog.AddCommandControl(203, L"Third command button control");

// Show the CTaskDialog and remember how the user closed it.
int selection = taskDialog.DoModal();

switch (selection)
{
case 201:
   // TODO: Place processing here for the first
   // command button control.
   break;

case 202:
   // TODO: Place processing here for the second
   // command button control.
   break;

case 203:
   // TODO: Place processing here for the third
   // command button control.
   break;

default:
   break;
}

// Remove all the command controls so that we can use the same task
// dialog with new command button controls.
taskDialog.RemoveAllCommandControls();

taskDialog.AddCommandControl(301,
                             L"New first command button control");
taskDialog.AddCommandControl(302,
                             L"New second command button control should require elevation",
                             TRUE, TRUE);
taskDialog.AddCommandControl(303,
                             L"New third command button control should be disabled");

// Change the default command button control
taskDialog.SetDefaultCommandControl(302);

// Make sure the third option is disabled.
if (taskDialog.IsCommandControlEnabled(303))
{
   taskDialog.SetCommandControlOptions(303, FALSE);
}

taskDialog.DoModal();

switch (taskDialog.GetSelectedCommandControlID())
{
case 301:
   // TODO: Place processing here for new first
   // command button control.
   break;

case 302:
   // TODO: Place processing here for new second
   // command button control.
   break;

case 303:
   // TODO: Place processing here for the new third
   // command button control.
   break;

default:
   break;
}

// Remove all the command button controls and add new ones from
// the string table resource.
taskDialog.RemoveAllCommandControls();
taskDialog.LoadCommandControls(1001, 1005);

CTaskDialog::AddRadioButton

將單選按鈕新增至 CTaskDialog

void CTaskDialog::AddRadioButton(
    int nRadioButtonID,
    const CString& strCaption,
    BOOL bEnabled = TRUE);

參數

nRadioButtonID
[in]單選按鈕的標識碼。

strCaption
[in]單選按鈕旁顯示的字串 CTaskDialog

bEnabled
[in]布爾參數,指出是否啟用單選按鈕。

備註

CTaskDialog 類別的單選按鈕可讓您從使用者收集資訊。 使用 CTaskDialog::GetSelectedRadioButtonID 函數來判斷選取哪一個單選按鈕。

CTaskDialog不需要 nRadioButtonID 參數對於每個單選按鈕而言都是唯一的。 不過,如果您未針對每個單選按鈕使用不同的標識符,您可能會遇到非預期的行為。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

taskDialog.AddRadioButton(201, L"First option");
taskDialog.AddRadioButton(202, L"Second option");
taskDialog.AddRadioButton(203, L"Third option");

taskDialog.DoModal();
int selection = taskDialog.GetSelectedRadioButtonID();

switch (selection)
{
case 201:
   // TODO: Place processing here for the first
   // radio button.
   break;

case 202:
   // TODO: Place processing here for the second
   // radio button.
   break;

case 203:
   // TODO: Place processing here for the third
   // radio button.
   break;

default:
   break;
}

// Remove all the radio buttons so that we can use the same task
// dialog with new radio buttons.
taskDialog.RemoveAllRadioButtons();

taskDialog.AddRadioButton(301, L"New first option");
taskDialog.AddRadioButton(302, L"New second option");
taskDialog.AddRadioButton(303,
                          L"New third option should be disabled");

// Change the default radio button to the second option
taskDialog.SetDefaultRadioButton(302);

// Make sure the third option is disabled.
if (taskDialog.IsRadioButtonEnabled(303))
{
   taskDialog.SetRadioButtonOptions(303, FALSE);
}

taskDialog.DoModal();
selection = taskDialog.GetSelectedRadioButtonID();

switch (taskDialog.GetSelectedRadioButtonID())
{
case 301:
   // TODO: Place processing here for new first
   // command button control.
   break;

case 302:
   // TODO: Place processing here for new second
   // command button control.
   break;

case 303:
   // TODO: Place processing here for the new third
   // command button control.
   break;

default:
   break;
}

// Remove all the radio button controls and add new ones from
// the string table resource.
taskDialog.RemoveAllRadioButtons();
taskDialog.LoadRadioButtons(1001, 1005);

CTaskDialog::ClickCommandControl

按兩下命令按鈕控制件或以程式設計方式的通用按鈕。

protected:
void ClickCommandControl(int nCommandControlID) const;

參數

nCommandControlID
[in]要按下之控件的命令標識碼。

備註

此方法會產生 windows 訊息TDM_CLICK_BUTTON。

CTaskDialog::ClickRadioButton

以程式設計方式按下按下按鍵。

protected:
void ClickRadioButton(int nRadioButtonID) const;

參數

nRadioButtonID
[in]要按下的單選按鈕標識碼。

備註

此方法會產生 windows 訊息TDM_CLICK_RADIO_BUTTON。

CTaskDialog::CTaskDialog

建立 CTaskDialog 類別實例。

CTaskDialog(
    const CString& strContent,
    const CString& strMainInstruction,
    const CString& strTitle,
    int nCommonButtons = TDCBF_OK_BUTTON | TDCBF_CANCEL_BUTTON,
    int nTaskDialogOptions = TDF_ENABLE_HYPERLINKS | TDF_USE_COMMAND_LINKS,
    const CString& strFooter = _T(""));

CTaskDialog(
    const CString& strContent,
    const CString& strMainInstruction,
    const CString& strTitle,
    int nIDCommandControlsFirst,
    int nIDCommandControlsLast,
    int nCommonButtons,
    int nTaskDialogOptions = TDF_ENABLE_HYPERLINKS | TDF_USE_COMMAND_LINKS,
    const CString& strFooter = _T(""));

參數

strContent
[in]要用於之內容的 CTaskDialog字串。

strMainInstruction
[in]的主要指示 CTaskDialog

strTitle
[in]的 CTaskDialog標題。

nCommonButtons
[in]要加入至 CTaskDialog的通用按鈕遮罩。

nTaskDialogOptions
[in]要用於 CTaskDialog的選項集。

strFooter
[in]要當做頁尾使用的字串。

nIDCommandControlsFirst
[in]第一個命令的字串標識碼。

nIDCommandControlsLast
[in]最後一個命令的字串標識碼。

備註

有兩種方式可將 新增 CTaskDialog 至應用程式。 第一種方式是使用其中一個建構函式來建立CTaskDialog,並使用 CTaskDialog::D oModal 加以顯示。 第二種方式是使用靜態函式 CTaskDialog::ShowDialog,這可讓您在不明確建立CTaskDialog對象的情況下顯示 CTaskDialog

第二個建構函式會使用來自應用程式資源檔案的數據來建立命令按鈕控制件。 資源檔中的字串數據表有數個字串與相關聯的字串標識碼。 這個方法會在包含 nIDCommandControlsFirst 和 nCommandControlsLast 之間,針對字串數據表中的每個有效專案新增命令按鈕控件。 對於這些命令按鈕控制件,字串數據表中的字串是控件的標題,而字串標識元則是控制件的識別碼。

如需有效選項的清單,請參閱 CTaskDialog::SetOptions

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

// Setting new information to be able to reuse the dialog resource
taskDialog.SetWindowTitle(L"New title for the task dialog");
taskDialog.SetContent(L"New message to show the user.");
taskDialog.SetMainInstruction(L"Even more important!");
taskDialog.SetMainIcon(TD_ERROR_ICON);
taskDialog.SetDialogWidth(300);

// Add a footer
taskDialog.SetFooterText(L"Footer information for the dialog.");
taskDialog.SetFooterIcon(TD_INFORMATION_ICON);

// Add expansion information
taskDialog.SetExpansionArea(L"Additional information\non two lines.",
                            L"Click here for more information.",
                            L"Click here to hide the extra information.");

// Change the options to show the expanded information by default.
// It is necessary to retrieve the current options first.
int options = taskDialog.GetOptions();
options |= TDF_EXPANDED_BY_DEFAULT;
taskDialog.SetOptions(options);

taskDialog.DoModal();

CTaskDialog::D oModal

CTaskDialog顯示 ,並使它變成強制回應。

INT_PTR DoModal (HWND hParent = ::GetActiveWindow());

參數

hParent
[in]的父視窗 CTaskDialog

傳回值

整數,對應至使用者所做的選取範圍。

備註

顯示 CTaskDialog這個實例。 然後,應用程式會等候使用者關閉對話方塊。

當使用者 CTaskDialog 選取通用按鈕、指令連結控制項或關閉 時 CTaskDialog關閉 。 傳回值是指出使用者如何關閉對話框的標識碼。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

// Setting new information to be able to reuse the dialog resource
taskDialog.SetWindowTitle(L"New title for the task dialog");
taskDialog.SetContent(L"New message to show the user.");
taskDialog.SetMainInstruction(L"Even more important!");
taskDialog.SetMainIcon(TD_ERROR_ICON);
taskDialog.SetDialogWidth(300);

// Add a footer
taskDialog.SetFooterText(L"Footer information for the dialog.");
taskDialog.SetFooterIcon(TD_INFORMATION_ICON);

// Add expansion information
taskDialog.SetExpansionArea(L"Additional information\non two lines.",
                            L"Click here for more information.",
                            L"Click here to hide the extra information.");

// Change the options to show the expanded information by default.
// It is necessary to retrieve the current options first.
int options = taskDialog.GetOptions();
options |= TDF_EXPANDED_BY_DEFAULT;
taskDialog.SetOptions(options);

taskDialog.DoModal();

CTaskDialog::GetCommonButtonCount

擷取一般按鈕的數目。

int GetCommonButtonCount() const;

傳回值

可用的一般按鈕數目。

備註

常見的按鈕是您提供給 CTaskDialog::CTaskDialog 的預設按鈕。 CTaskDialog 類別會顯示對話方塊底部的按鈕。

CommCtrl.h 中會提供按鈕的列舉清單。

CTaskDialog::GetCommonButtonFlag

將標準 Windows 按鈕轉換成與 CTaskDialog 類別相關聯的通用按鈕類型。

int GetCommonButtonFlag(int nButtonId) const;

參數

nButtonId
[in]標準 Windows 按鈕值。

傳回值

對應 CTaskDialog 通用按鈕的值。 如果沒有對應的通用按鈕,這個方法會傳回 0。

CTaskDialog::GetCommonButtonId

將與 CTaskDialog 類別相關聯的其中一個通用按鈕類型轉換為標準 Windows 按鈕。

int GetCommonButtonId(int nFlag);

參數

nFlag
[in]與 CTaskDialog 類別相關聯的通用按鈕類型。

傳回值

對應標準 Windows 按鈕的值。 如果沒有對應的 Windows 按鈕,此方法會傳回 0。

CTaskDialog::GetOptions

傳回這個 CTaskDialog的選項旗標。

int GetOptions() const;

傳回值

CTaskDialog旗標。

備註

如需 CTaskDialog 類別可用選項的詳細資訊,請參閱 CTaskDialog::SetOptions

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

// Setting new information to be able to reuse the dialog resource
taskDialog.SetWindowTitle(L"New title for the task dialog");
taskDialog.SetContent(L"New message to show the user.");
taskDialog.SetMainInstruction(L"Even more important!");
taskDialog.SetMainIcon(TD_ERROR_ICON);
taskDialog.SetDialogWidth(300);

// Add a footer
taskDialog.SetFooterText(L"Footer information for the dialog.");
taskDialog.SetFooterIcon(TD_INFORMATION_ICON);

// Add expansion information
taskDialog.SetExpansionArea(L"Additional information\non two lines.",
                            L"Click here for more information.",
                            L"Click here to hide the extra information.");

// Change the options to show the expanded information by default.
// It is necessary to retrieve the current options first.
int options = taskDialog.GetOptions();
options |= TDF_EXPANDED_BY_DEFAULT;
taskDialog.SetOptions(options);

taskDialog.DoModal();

CTaskDialog::GetSelectedCommandControlID

傳回選取的命令按鈕控制件。

int GetSelectedCommandControlID() const;

傳回值

目前選取之命令按鈕控件的標識碼。

備註

您不需要使用此方法來擷取使用者選取之命令按鈕的識別碼。 該標識碼是由 CTaskDialog::D oModalCTaskDialog::ShowDialog 傳回。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title.
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

taskDialog.AddCommandControl(201, L"First command button control");
taskDialog.AddCommandControl(202, L"Second command button control");
taskDialog.AddCommandControl(203, L"Third command button control");

// Show the CTaskDialog and remember how the user closed it.
int selection = taskDialog.DoModal();

switch (selection)
{
case 201:
   // TODO: Place processing here for the first
   // command button control.
   break;

case 202:
   // TODO: Place processing here for the second
   // command button control.
   break;

case 203:
   // TODO: Place processing here for the third
   // command button control.
   break;

default:
   break;
}

// Remove all the command controls so that we can use the same task
// dialog with new command button controls.
taskDialog.RemoveAllCommandControls();

taskDialog.AddCommandControl(301,
                             L"New first command button control");
taskDialog.AddCommandControl(302,
                             L"New second command button control should require elevation",
                             TRUE, TRUE);
taskDialog.AddCommandControl(303,
                             L"New third command button control should be disabled");

// Change the default command button control
taskDialog.SetDefaultCommandControl(302);

// Make sure the third option is disabled.
if (taskDialog.IsCommandControlEnabled(303))
{
   taskDialog.SetCommandControlOptions(303, FALSE);
}

taskDialog.DoModal();

switch (taskDialog.GetSelectedCommandControlID())
{
case 301:
   // TODO: Place processing here for new first
   // command button control.
   break;

case 302:
   // TODO: Place processing here for new second
   // command button control.
   break;

case 303:
   // TODO: Place processing here for the new third
   // command button control.
   break;

default:
   break;
}

// Remove all the command button controls and add new ones from
// the string table resource.
taskDialog.RemoveAllCommandControls();
taskDialog.LoadCommandControls(1001, 1005);

CTaskDialog::GetSelectedRadioButtonID

傳回選取的單選按鈕。

int GetSelectedRadioButtonID() const;

傳回值

所選單選按鈕的識別碼。

備註

在使用者關閉對話框以擷取選取的單選按鈕之後,您可以使用這個方法。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

taskDialog.AddRadioButton(201, L"First option");
taskDialog.AddRadioButton(202, L"Second option");
taskDialog.AddRadioButton(203, L"Third option");

taskDialog.DoModal();
int selection = taskDialog.GetSelectedRadioButtonID();

switch (selection)
{
case 201:
   // TODO: Place processing here for the first
   // radio button.
   break;

case 202:
   // TODO: Place processing here for the second
   // radio button.
   break;

case 203:
   // TODO: Place processing here for the third
   // radio button.
   break;

default:
   break;
}

// Remove all the radio buttons so that we can use the same task
// dialog with new radio buttons.
taskDialog.RemoveAllRadioButtons();

taskDialog.AddRadioButton(301, L"New first option");
taskDialog.AddRadioButton(302, L"New second option");
taskDialog.AddRadioButton(303,
                          L"New third option should be disabled");

// Change the default radio button to the second option
taskDialog.SetDefaultRadioButton(302);

// Make sure the third option is disabled.
if (taskDialog.IsRadioButtonEnabled(303))
{
   taskDialog.SetRadioButtonOptions(303, FALSE);
}

taskDialog.DoModal();
selection = taskDialog.GetSelectedRadioButtonID();

switch (taskDialog.GetSelectedRadioButtonID())
{
case 301:
   // TODO: Place processing here for new first
   // command button control.
   break;

case 302:
   // TODO: Place processing here for new second
   // command button control.
   break;

case 303:
   // TODO: Place processing here for the new third
   // command button control.
   break;

default:
   break;
}

// Remove all the radio button controls and add new ones from
// the string table resource.
taskDialog.RemoveAllRadioButtons();
taskDialog.LoadRadioButtons(1001, 1005);

CTaskDialog::GetVerificationCheckboxState

擷取 [驗證] 複選框的狀態。

BOOL GetVerificationCheckboxState() const;

傳回值

如果核取複選框,則為TRUE;如果不是,則為 FALSE。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

// Add the verification checkbox and set the default state.
taskDialog.SetVerificationCheckboxText(L"Remember your selection.");
taskDialog.SetVerificationCheckbox(false);

taskDialog.DoModal();

if (taskDialog.GetVerificationCheckboxState())
{
   // TODO: Write settings of the task dialog to the registry
}

CTaskDialog::IsCommandControlEnabled

判斷是否啟用命令按鈕控制件或按鈕。

BOOL IsCommandControlEnabled(int nCommandControlID) const;

參數

nCommandControlID
[in]要測試之命令按鈕控制件或按鈕的標識碼。

傳回值

如果控件已啟用,則為TRUE,否則為 FALSE。

備註

您可以使用此方法來判斷命令按鈕控制項和 Class* 的通用按鈕 CTaskDialog 可用性。

如果 nCommandControlID 不是通用 CTaskDialog 按鈕或命令按鈕控件的有效標識符,這個方法會擲回例外狀況。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title.
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

taskDialog.AddCommandControl(201, L"First command button control");
taskDialog.AddCommandControl(202, L"Second command button control");
taskDialog.AddCommandControl(203, L"Third command button control");

// Show the CTaskDialog and remember how the user closed it.
int selection = taskDialog.DoModal();

switch (selection)
{
case 201:
   // TODO: Place processing here for the first
   // command button control.
   break;

case 202:
   // TODO: Place processing here for the second
   // command button control.
   break;

case 203:
   // TODO: Place processing here for the third
   // command button control.
   break;

default:
   break;
}

// Remove all the command controls so that we can use the same task
// dialog with new command button controls.
taskDialog.RemoveAllCommandControls();

taskDialog.AddCommandControl(301,
                             L"New first command button control");
taskDialog.AddCommandControl(302,
                             L"New second command button control should require elevation",
                             TRUE, TRUE);
taskDialog.AddCommandControl(303,
                             L"New third command button control should be disabled");

// Change the default command button control
taskDialog.SetDefaultCommandControl(302);

// Make sure the third option is disabled.
if (taskDialog.IsCommandControlEnabled(303))
{
   taskDialog.SetCommandControlOptions(303, FALSE);
}

taskDialog.DoModal();

switch (taskDialog.GetSelectedCommandControlID())
{
case 301:
   // TODO: Place processing here for new first
   // command button control.
   break;

case 302:
   // TODO: Place processing here for new second
   // command button control.
   break;

case 303:
   // TODO: Place processing here for the new third
   // command button control.
   break;

default:
   break;
}

// Remove all the command button controls and add new ones from
// the string table resource.
taskDialog.RemoveAllCommandControls();
taskDialog.LoadCommandControls(1001, 1005);

CTaskDialog::IsRadioButtonEnabled

判斷是否啟用單選按鈕。

BOOL IsRadioButtonEnabled(int nRadioButtonID) const;

參數

nRadioButtonID
[in]要測試的單選按鈕標識碼。

傳回值

如果單選按鈕已啟用,則為TRUE;如果不是,則為 FALSE。

備註

如果 nRadioButtonID 不是單選按鈕的有效標識符,這個方法會擲回例外狀況。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

taskDialog.AddRadioButton(201, L"First option");
taskDialog.AddRadioButton(202, L"Second option");
taskDialog.AddRadioButton(203, L"Third option");

taskDialog.DoModal();
int selection = taskDialog.GetSelectedRadioButtonID();

switch (selection)
{
case 201:
   // TODO: Place processing here for the first
   // radio button.
   break;

case 202:
   // TODO: Place processing here for the second
   // radio button.
   break;

case 203:
   // TODO: Place processing here for the third
   // radio button.
   break;

default:
   break;
}

// Remove all the radio buttons so that we can use the same task
// dialog with new radio buttons.
taskDialog.RemoveAllRadioButtons();

taskDialog.AddRadioButton(301, L"New first option");
taskDialog.AddRadioButton(302, L"New second option");
taskDialog.AddRadioButton(303,
                          L"New third option should be disabled");

// Change the default radio button to the second option
taskDialog.SetDefaultRadioButton(302);

// Make sure the third option is disabled.
if (taskDialog.IsRadioButtonEnabled(303))
{
   taskDialog.SetRadioButtonOptions(303, FALSE);
}

taskDialog.DoModal();
selection = taskDialog.GetSelectedRadioButtonID();

switch (taskDialog.GetSelectedRadioButtonID())
{
case 301:
   // TODO: Place processing here for new first
   // command button control.
   break;

case 302:
   // TODO: Place processing here for new second
   // command button control.
   break;

case 303:
   // TODO: Place processing here for the new third
   // command button control.
   break;

default:
   break;
}

// Remove all the radio button controls and add new ones from
// the string table resource.
taskDialog.RemoveAllRadioButtons();
taskDialog.LoadRadioButtons(1001, 1005);

CTaskDialog::IsSupported

判斷執行應用程式的電腦是否支援 CTaskDialog

static BOOL IsSupported();

傳回值

如果計算機支援 , CTaskDialog則為TRUE;否則為 FALSE。

備註

使用此函式來判斷執行應用程式的計算機是否支持 類別 CTaskDialog 。 如果計算機不支援 CTaskDialog,您應該提供另一種方法來向使用者傳達資訊。 如果您的應用程式嘗試在不支援 CTaskDialog 類別的計算機上使用 CTaskDialog ,就會當機。

範例

// TODO: Replace the string below with the actual message to the user
CString message("Important information to the user");
// TODO: Replace the string below with the title of this project
CString title("Project Title");

CString emptyString;

if (CTaskDialog::IsSupported())
{
   CTaskDialog::ShowDialog(message, emptyString, title, 0, 0,
                           TDCBF_OK_BUTTON);
}
else
{
   AfxMessageBox(message);
}

CTaskDialog::LoadCommandControls

使用字串數據表中的數據來新增命令按鈕控制件。

void LoadCommandControls(
    int nIDCommandControlsFirst,
    int nIDCommandControlsLast);

參數

nIDCommandControlsFirst
[in]第一個命令的字串標識碼。

nIDCommandControlsLast
[in]最後一個命令的字串標識碼。

備註

這個方法會使用應用程式資源檔中的數據來建立命令按鈕控制件。 資源檔中的字串數據表有數個字串與相關聯的字串標識碼。 使用這個方法新增的命令按鈕控制項會使用控件標題的字串,以及控件識別元的字串標識符。 選取的字串範圍是由 nIDCommandControlsFirstnCommandControlsLast 提供, 包含。 如果範圍中有空的專案,則方法不會新增該專案的命令按鈕控件。

根據預設,會啟用新的命令按鈕控件,而且不需要提高許可權。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title.
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

taskDialog.AddCommandControl(201, L"First command button control");
taskDialog.AddCommandControl(202, L"Second command button control");
taskDialog.AddCommandControl(203, L"Third command button control");

// Show the CTaskDialog and remember how the user closed it.
int selection = taskDialog.DoModal();

switch (selection)
{
case 201:
   // TODO: Place processing here for the first
   // command button control.
   break;

case 202:
   // TODO: Place processing here for the second
   // command button control.
   break;

case 203:
   // TODO: Place processing here for the third
   // command button control.
   break;

default:
   break;
}

// Remove all the command controls so that we can use the same task
// dialog with new command button controls.
taskDialog.RemoveAllCommandControls();

taskDialog.AddCommandControl(301,
                             L"New first command button control");
taskDialog.AddCommandControl(302,
                             L"New second command button control should require elevation",
                             TRUE, TRUE);
taskDialog.AddCommandControl(303,
                             L"New third command button control should be disabled");

// Change the default command button control
taskDialog.SetDefaultCommandControl(302);

// Make sure the third option is disabled.
if (taskDialog.IsCommandControlEnabled(303))
{
   taskDialog.SetCommandControlOptions(303, FALSE);
}

taskDialog.DoModal();

switch (taskDialog.GetSelectedCommandControlID())
{
case 301:
   // TODO: Place processing here for new first
   // command button control.
   break;

case 302:
   // TODO: Place processing here for new second
   // command button control.
   break;

case 303:
   // TODO: Place processing here for the new third
   // command button control.
   break;

default:
   break;
}

// Remove all the command button controls and add new ones from
// the string table resource.
taskDialog.RemoveAllCommandControls();
taskDialog.LoadCommandControls(1001, 1005);

CTaskDialog::LoadRadioButtons

使用字串數據表中的數據新增單選按鈕控制件。

void LoadRadioButtons(
    int nIDRadioButtonsFirst,
    int nIDRadioButtonsLast);

參數

nIDRadioButtonsFirst
[in]第一個單選按鈕的字串標識碼。

nIDRadioButtonsLast
[in]最後一個單選按鈕的字串標識碼。

備註

這個方法會使用應用程式資源檔中的數據來建立單選按鈕。 資源檔中的字串數據表有數個字串與相關聯的字串標識碼。 使用此方法新增的新單選按鈕會使用單選按鈕標題的字串,以及單選按鈕標識符的字串標識符。 選取的字串範圍是由 nIDRadioButtonsFirstnRadioButtonsLast 提供, 包含。 如果範圍中有空的專案,則方法不會為該專案新增單選按鈕。

根據預設,會啟用新的單選按鈕。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

taskDialog.AddRadioButton(201, L"First option");
taskDialog.AddRadioButton(202, L"Second option");
taskDialog.AddRadioButton(203, L"Third option");

taskDialog.DoModal();
int selection = taskDialog.GetSelectedRadioButtonID();

switch (selection)
{
case 201:
   // TODO: Place processing here for the first
   // radio button.
   break;

case 202:
   // TODO: Place processing here for the second
   // radio button.
   break;

case 203:
   // TODO: Place processing here for the third
   // radio button.
   break;

default:
   break;
}

// Remove all the radio buttons so that we can use the same task
// dialog with new radio buttons.
taskDialog.RemoveAllRadioButtons();

taskDialog.AddRadioButton(301, L"New first option");
taskDialog.AddRadioButton(302, L"New second option");
taskDialog.AddRadioButton(303,
                          L"New third option should be disabled");

// Change the default radio button to the second option
taskDialog.SetDefaultRadioButton(302);

// Make sure the third option is disabled.
if (taskDialog.IsRadioButtonEnabled(303))
{
   taskDialog.SetRadioButtonOptions(303, FALSE);
}

taskDialog.DoModal();
selection = taskDialog.GetSelectedRadioButtonID();

switch (taskDialog.GetSelectedRadioButtonID())
{
case 301:
   // TODO: Place processing here for new first
   // command button control.
   break;

case 302:
   // TODO: Place processing here for new second
   // command button control.
   break;

case 303:
   // TODO: Place processing here for the new third
   // command button control.
   break;

default:
   break;
}

// Remove all the radio button controls and add new ones from
// the string table resource.
taskDialog.RemoveAllRadioButtons();
taskDialog.LoadRadioButtons(1001, 1005);

將焦點傳輸到另一個 CTaskDialog

protected:
void NavigateTo(CTaskDialog& oTaskDialog) const;

參數

oTaskDialog
[in] CTaskDialog 接收焦點的 。

備註

這個方法會在顯示 oTaskDialog 時隱藏目前的 CTaskDialogoTaskDialog 會顯示在與目前 CTaskDialog相同的位置。

CTaskDialog::OnCommandControlClick

當使用者按下命令按鈕控制項時,架構會呼叫此方法。

virtual HRESULT OnCommandControlClick(int nCommandControlID);

參數

nCommandControlID
[in]用戶選取之命令按鈕控制件的識別碼。

傳回值

默認實作會傳回S_OK。

備註

覆寫衍生類別中的這個方法,以實作自定義行為。

CTaskDialog::OnCreate

架構會在建立 CTaskDialog之後呼叫這個方法。

virtual HRESULT OnCreate();

傳回值

默認實作會傳回S_OK。

備註

覆寫衍生類別中的這個方法,以實作自定義行為。

CTaskDialog::OnDestroy

架構會在終結 CTaskDialog之前立即呼叫這個方法。

virtual HRESULT OnDestroy();

傳回值

默認實作會傳回S_OK。

備註

覆寫衍生類別中的這個方法,以實作自定義行為。

CTaskDialog::OnExpandButtonClick

當使用者按兩下展開按鈕時,架構會呼叫此方法。

virtual HRESULT OnExpandButtonClicked(BOOL bExpanded);

參數

bExpanded
[in]非零值表示顯示額外的資訊;0 表示隱藏額外的資訊。

傳回值

默認實作會傳回S_OK。

備註

覆寫衍生類別中的這個方法,以實作自定義行為。

CTaskDialog::OnHelp

當使用者要求協助時,架構會呼叫此方法。

virtual HRESULT OnHelp();

傳回值

默認實作會傳回S_OK。

備註

覆寫衍生類別中的這個方法,以實作自定義行為。

CTaskDialog::OnHyperlinkClick

當使用者按兩下超連結時,架構會呼叫此方法。

virtual HRESULT OnHyperlinkClick(const CString& strHref);

參數

strHref
[in]表示超連結的字串。

傳回值

默認實作會傳回S_OK。

備註

這個方法會先呼叫 ShellExecute ,再傳回S_OK。

覆寫衍生類別中的這個方法,以實作自定義行為。

CTaskDialog::OnInit

架構會在 初始化時 CTaskDialog 呼叫這個方法。

virtual HRESULT OnInit();

傳回值

默認實作會傳回S_OK。

備註

覆寫衍生類別中的這個方法,以實作自定義行為。

CTaskDialog::OnNavigatePage

架構會呼叫此方法,以回應 CTaskDialog::NavigateTo 方法。

virtual HRESULT OnNavigatePage();

傳回值

默認實作會傳回S_OK。

備註

覆寫衍生類別中的這個方法,以實作自定義行為。

CTaskDialog::OnRadioButtonClick

當使用者選取單選按鈕控制項時,架構會呼叫此方法。

virtual HRESULT OnRadioButtonClick(int nRadioButtonID);

參數

nRadioButtonID
[in]使用者按下的單選按鈕控件標識碼。

傳回值

默認實作會傳回S_OK。

備註

覆寫衍生類別中的這個方法,以實作自定義行為。

CTaskDialog::OnTimer

架構會在定時器到期時呼叫這個方法。

virtual HRESULT OnTimer(long lTime);

參數

lTime
[in]建立 之後 CTaskDialog 的毫秒或定時器重設的時間。

傳回值

默認實作會傳回S_OK。

備註

覆寫衍生類別中的這個方法,以實作自定義行為。

CTaskDialog::OnVerificationCheckboxClick

當使用者按兩下 [驗證] 複選框時,架構會呼叫此方法。

virtual HRESULT OnVerificationCheckboxClick(BOOL bChecked);

參數

bChecked
[in]TRUE 表示已選取驗證複選框;FALSE 表示它不是。

傳回值

默認實作會傳回S_OK。

備註

覆寫衍生類別中的這個方法,以實作自定義行為。

CTaskDialog::RemoveAllCommandControls

從 移除所有命令按鈕控制件 CTaskDialog

void RemoveAllCommandControls();

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title.
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

taskDialog.AddCommandControl(201, L"First command button control");
taskDialog.AddCommandControl(202, L"Second command button control");
taskDialog.AddCommandControl(203, L"Third command button control");

// Show the CTaskDialog and remember how the user closed it.
int selection = taskDialog.DoModal();

switch (selection)
{
case 201:
   // TODO: Place processing here for the first
   // command button control.
   break;

case 202:
   // TODO: Place processing here for the second
   // command button control.
   break;

case 203:
   // TODO: Place processing here for the third
   // command button control.
   break;

default:
   break;
}

// Remove all the command controls so that we can use the same task
// dialog with new command button controls.
taskDialog.RemoveAllCommandControls();

taskDialog.AddCommandControl(301,
                             L"New first command button control");
taskDialog.AddCommandControl(302,
                             L"New second command button control should require elevation",
                             TRUE, TRUE);
taskDialog.AddCommandControl(303,
                             L"New third command button control should be disabled");

// Change the default command button control
taskDialog.SetDefaultCommandControl(302);

// Make sure the third option is disabled.
if (taskDialog.IsCommandControlEnabled(303))
{
   taskDialog.SetCommandControlOptions(303, FALSE);
}

taskDialog.DoModal();

switch (taskDialog.GetSelectedCommandControlID())
{
case 301:
   // TODO: Place processing here for new first
   // command button control.
   break;

case 302:
   // TODO: Place processing here for new second
   // command button control.
   break;

case 303:
   // TODO: Place processing here for the new third
   // command button control.
   break;

default:
   break;
}

// Remove all the command button controls and add new ones from
// the string table resource.
taskDialog.RemoveAllCommandControls();
taskDialog.LoadCommandControls(1001, 1005);

CTaskDialog::RemoveAllRadioButtons

從移除所有單選按鈕 CTaskDialog

void RemoveAllRadioButtons();

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

taskDialog.AddRadioButton(201, L"First option");
taskDialog.AddRadioButton(202, L"Second option");
taskDialog.AddRadioButton(203, L"Third option");

taskDialog.DoModal();
int selection = taskDialog.GetSelectedRadioButtonID();

switch (selection)
{
case 201:
   // TODO: Place processing here for the first
   // radio button.
   break;

case 202:
   // TODO: Place processing here for the second
   // radio button.
   break;

case 203:
   // TODO: Place processing here for the third
   // radio button.
   break;

default:
   break;
}

// Remove all the radio buttons so that we can use the same task
// dialog with new radio buttons.
taskDialog.RemoveAllRadioButtons();

taskDialog.AddRadioButton(301, L"New first option");
taskDialog.AddRadioButton(302, L"New second option");
taskDialog.AddRadioButton(303,
                          L"New third option should be disabled");

// Change the default radio button to the second option
taskDialog.SetDefaultRadioButton(302);

// Make sure the third option is disabled.
if (taskDialog.IsRadioButtonEnabled(303))
{
   taskDialog.SetRadioButtonOptions(303, FALSE);
}

taskDialog.DoModal();
selection = taskDialog.GetSelectedRadioButtonID();

switch (taskDialog.GetSelectedRadioButtonID())
{
case 301:
   // TODO: Place processing here for new first
   // command button control.
   break;

case 302:
   // TODO: Place processing here for new second
   // command button control.
   break;

case 303:
   // TODO: Place processing here for the new third
   // command button control.
   break;

default:
   break;
}

// Remove all the radio button controls and add new ones from
// the string table resource.
taskDialog.RemoveAllRadioButtons();
taskDialog.LoadRadioButtons(1001, 1005);

CTaskDialog::SetCommandControlOptions

更新上的 CTaskDialog命令按鈕控制件。

void SetCommandControlOptions(
    int nCommandControlID,
    BOOL bEnabled,
    BOOL bRequiresElevation = FALSE);

參數

nCommandControlID
[in]要更新之命令控件的標識碼。

bEnabled
[in]布爾參數,指出指定的命令按鈕控制項是否已啟用或停用。

bRequiresElevation
[in]布爾參數,指出指定的命令按鈕控制項是否需要提高許可權。

備註

使用此方法可變更是否啟用命令按鈕控制件,或在將命令按鈕新增至 CTaskDialog 類別之後需要提高許可權。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title.
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

taskDialog.AddCommandControl(201, L"First command button control");
taskDialog.AddCommandControl(202, L"Second command button control");
taskDialog.AddCommandControl(203, L"Third command button control");

// Show the CTaskDialog and remember how the user closed it.
int selection = taskDialog.DoModal();

switch (selection)
{
case 201:
   // TODO: Place processing here for the first
   // command button control.
   break;

case 202:
   // TODO: Place processing here for the second
   // command button control.
   break;

case 203:
   // TODO: Place processing here for the third
   // command button control.
   break;

default:
   break;
}

// Remove all the command controls so that we can use the same task
// dialog with new command button controls.
taskDialog.RemoveAllCommandControls();

taskDialog.AddCommandControl(301,
                             L"New first command button control");
taskDialog.AddCommandControl(302,
                             L"New second command button control should require elevation",
                             TRUE, TRUE);
taskDialog.AddCommandControl(303,
                             L"New third command button control should be disabled");

// Change the default command button control
taskDialog.SetDefaultCommandControl(302);

// Make sure the third option is disabled.
if (taskDialog.IsCommandControlEnabled(303))
{
   taskDialog.SetCommandControlOptions(303, FALSE);
}

taskDialog.DoModal();

switch (taskDialog.GetSelectedCommandControlID())
{
case 301:
   // TODO: Place processing here for new first
   // command button control.
   break;

case 302:
   // TODO: Place processing here for new second
   // command button control.
   break;

case 303:
   // TODO: Place processing here for the new third
   // command button control.
   break;

default:
   break;
}

// Remove all the command button controls and add new ones from
// the string table resource.
taskDialog.RemoveAllCommandControls();
taskDialog.LoadCommandControls(1001, 1005);

CTaskDialog::SetCommonButtonOptions

更新要啟用的通用按鈕子集,並要求提高UAC許可權。

void SetCommonButtonOptions(
    int nDisabledButtonMask,
    int nElevationButtonMask = 0);

參數

nDisabledButtonMask
[in]要停用之通用按鈕的遮罩。

nElevationButtonMask
[in]需要提高許可權之常見按鈕的遮罩。

備註

您可以使用建構函式 CTaskDialog::CTaskDialog 和 CTaskDialog::SetCommonButtons 方法來設定 CTaskDialog 類別實例可用的通用按鈕。 CTaskDialog::SetCommonButtonOptions 不支援新增一般按鈕。

如果您使用此方法來停用或提高這個 CTaskDialog無法使用的通用按鈕,這個方法會使用 ENSURE 巨集擲回例外狀況。

這個方法會啟用任何可供 使用的CTaskDialog按鈕,但不是在 nDisabledButtonMask,即使先前已停用也一樣。 此方法會以類似的方式處理提高許可權:如果通用按鈕可用,但不包含在 nElevationButtonMask,則會將通用按鈕記錄為不需要提高許可權。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title);

// Create a button mask.
int buttons = TDCBF_OK_BUTTON | TDCBF_CANCEL_BUTTON;
buttons |= TDCBF_RETRY_BUTTON | TDCBF_CLOSE_BUTTON;

taskDialog.SetCommonButtons(buttons);

// Disable the close button and make the retry button require
// elevation.
taskDialog.SetCommonButtonOptions(TDCBF_CLOSE_BUTTON,
                                  TDCBF_RETRY_BUTTON);

taskDialog.DoModal();

CTaskDialog::SetCommonButtons

將一般按鈕新增至 CTaskDialog

void SetCommonButtons(
    int nButtonMask,
    int nDisabledButtonMask = 0,
    int nElevationButtonMask = 0);

參數

nButtonMask
[in]要加入至的 CTaskDialog按鈕遮罩。

nDisabledButtonMask
[in]要停用之按鈕的遮罩。

nElevationButtonMask
[in]需要提高許可權的按鈕遮罩。

備註

建立類別實例的 CTaskDialog 顯示窗口之後,即無法呼叫這個方法。 如果您這樣做,這個方法會擲回例外狀況。

nButtonMask指示的按鈕會覆寫先前新增至 CTaskDialog的任何通用按鈕。 只有 nButtonMask指出的按鈕可用。

如果 nDisabledButtonMask 或 nElevationButtonMask 包含不在 nButtonMask 中的按鈕,這個方法會使用 ENSURE 巨集 擲回例外狀況。

根據預設,所有通用按鈕都會啟用,而且不需要提高許可權。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title);

// Create a button mask.
int buttons = TDCBF_OK_BUTTON | TDCBF_CANCEL_BUTTON;
buttons |= TDCBF_RETRY_BUTTON | TDCBF_CLOSE_BUTTON;

taskDialog.SetCommonButtons(buttons);

// Disable the close button and make the retry button require
// elevation.
taskDialog.SetCommonButtonOptions(TDCBF_CLOSE_BUTTON,
                                  TDCBF_RETRY_BUTTON);

taskDialog.DoModal();

CTaskDialog::SetContent

更新的內容 CTaskDialog

void SetContent(const CString& strContent);

參數

strContent
[in]要向用戶顯示的字串。

備註

類別的內容 CTaskDialog 是對話框主區段中向用戶顯示的文字。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

// Setting new information to be able to reuse the dialog resource
taskDialog.SetWindowTitle(L"New title for the task dialog");
taskDialog.SetContent(L"New message to show the user.");
taskDialog.SetMainInstruction(L"Even more important!");
taskDialog.SetMainIcon(TD_ERROR_ICON);
taskDialog.SetDialogWidth(300);

// Add a footer
taskDialog.SetFooterText(L"Footer information for the dialog.");
taskDialog.SetFooterIcon(TD_INFORMATION_ICON);

// Add expansion information
taskDialog.SetExpansionArea(L"Additional information\non two lines.",
                            L"Click here for more information.",
                            L"Click here to hide the extra information.");

// Change the options to show the expanded information by default.
// It is necessary to retrieve the current options first.
int options = taskDialog.GetOptions();
options |= TDF_EXPANDED_BY_DEFAULT;
taskDialog.SetOptions(options);

taskDialog.DoModal();

CTaskDialog::SetDefaultCommandControl

指定預設命令按鈕控制件。

void SetDefaultCommandControl(int nCommandControlID);

參數

nCommandControlID
[in]要設為預設值之命令按鈕控件的標識碼。

備註

默認命令按鈕控制項是第一次向用戶顯示 時 CTaskDialog 選取的控制件。

如果找不到 nCommandControlID指定的命令按鈕控件,這個方法會擲回例外狀況。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title.
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

taskDialog.AddCommandControl(201, L"First command button control");
taskDialog.AddCommandControl(202, L"Second command button control");
taskDialog.AddCommandControl(203, L"Third command button control");

// Show the CTaskDialog and remember how the user closed it.
int selection = taskDialog.DoModal();

switch (selection)
{
case 201:
   // TODO: Place processing here for the first
   // command button control.
   break;

case 202:
   // TODO: Place processing here for the second
   // command button control.
   break;

case 203:
   // TODO: Place processing here for the third
   // command button control.
   break;

default:
   break;
}

// Remove all the command controls so that we can use the same task
// dialog with new command button controls.
taskDialog.RemoveAllCommandControls();

taskDialog.AddCommandControl(301,
                             L"New first command button control");
taskDialog.AddCommandControl(302,
                             L"New second command button control should require elevation",
                             TRUE, TRUE);
taskDialog.AddCommandControl(303,
                             L"New third command button control should be disabled");

// Change the default command button control
taskDialog.SetDefaultCommandControl(302);

// Make sure the third option is disabled.
if (taskDialog.IsCommandControlEnabled(303))
{
   taskDialog.SetCommandControlOptions(303, FALSE);
}

taskDialog.DoModal();

switch (taskDialog.GetSelectedCommandControlID())
{
case 301:
   // TODO: Place processing here for new first
   // command button control.
   break;

case 302:
   // TODO: Place processing here for new second
   // command button control.
   break;

case 303:
   // TODO: Place processing here for the new third
   // command button control.
   break;

default:
   break;
}

// Remove all the command button controls and add new ones from
// the string table resource.
taskDialog.RemoveAllCommandControls();
taskDialog.LoadCommandControls(1001, 1005);

CTaskDialog::SetDefaultRadioButton

指定預設單選按鈕。

void SetDefaultRadioButton(int nRadioButtonID);

參數

nRadioButtonID
[in]要設為預設值的單選按鈕標識碼。

備註

默認單選按鈕是第一次向用戶顯示時 CTaskDialog 所選取的按鈕。

如果找不到 nRadioButtonID指定的單選按鈕,這個方法會擲回例外狀況。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

taskDialog.AddRadioButton(201, L"First option");
taskDialog.AddRadioButton(202, L"Second option");
taskDialog.AddRadioButton(203, L"Third option");

taskDialog.DoModal();
int selection = taskDialog.GetSelectedRadioButtonID();

switch (selection)
{
case 201:
   // TODO: Place processing here for the first
   // radio button.
   break;

case 202:
   // TODO: Place processing here for the second
   // radio button.
   break;

case 203:
   // TODO: Place processing here for the third
   // radio button.
   break;

default:
   break;
}

// Remove all the radio buttons so that we can use the same task
// dialog with new radio buttons.
taskDialog.RemoveAllRadioButtons();

taskDialog.AddRadioButton(301, L"New first option");
taskDialog.AddRadioButton(302, L"New second option");
taskDialog.AddRadioButton(303,
                          L"New third option should be disabled");

// Change the default radio button to the second option
taskDialog.SetDefaultRadioButton(302);

// Make sure the third option is disabled.
if (taskDialog.IsRadioButtonEnabled(303))
{
   taskDialog.SetRadioButtonOptions(303, FALSE);
}

taskDialog.DoModal();
selection = taskDialog.GetSelectedRadioButtonID();

switch (taskDialog.GetSelectedRadioButtonID())
{
case 301:
   // TODO: Place processing here for new first
   // command button control.
   break;

case 302:
   // TODO: Place processing here for new second
   // command button control.
   break;

case 303:
   // TODO: Place processing here for the new third
   // command button control.
   break;

default:
   break;
}

// Remove all the radio button controls and add new ones from
// the string table resource.
taskDialog.RemoveAllRadioButtons();
taskDialog.LoadRadioButtons(1001, 1005);

CTaskDialog::SetDialogWidth

調整的 CTaskDialog寬度。

void SetDialogWidth(int nWidth = 0);

參數

nWidth
[in]對話框的寬度,以像素為單位。

備註

參數 nWidth 必須大於或等於 0。 否則,這個方法會擲回例外狀況。

如果 nWidth 設定為 0,這個方法會將對話框設定為預設大小。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

// Setting new information to be able to reuse the dialog resource
taskDialog.SetWindowTitle(L"New title for the task dialog");
taskDialog.SetContent(L"New message to show the user.");
taskDialog.SetMainInstruction(L"Even more important!");
taskDialog.SetMainIcon(TD_ERROR_ICON);
taskDialog.SetDialogWidth(300);

// Add a footer
taskDialog.SetFooterText(L"Footer information for the dialog.");
taskDialog.SetFooterIcon(TD_INFORMATION_ICON);

// Add expansion information
taskDialog.SetExpansionArea(L"Additional information\non two lines.",
                            L"Click here for more information.",
                            L"Click here to hide the extra information.");

// Change the options to show the expanded information by default.
// It is necessary to retrieve the current options first.
int options = taskDialog.GetOptions();
options |= TDF_EXPANDED_BY_DEFAULT;
taskDialog.SetOptions(options);

taskDialog.DoModal();

CTaskDialog::SetExpansionArea

更新的 CTaskDialog擴充區域。

void SetExpansionArea(
    const CString& strExpandedInformation,
    const CString& strCollapsedLabel = _T(""),
    const CString& strExpandedLabel = _T(""));

參數

strExpandedInformation
[in]當使用者按兩下展開按鈕時, CTaskDialog 對話框主體中顯示的字串。

strCollapsedLabel
[in]展開區域折疊時,展開按鈕旁顯示的字串 CTaskDialog

strExpandedLabel
[in]顯示展開區域時, CTaskDialog 展開按鈕旁顯示的字串。

備註

類別的 CTaskDialog 擴充區域可讓您為使用者提供其他資訊。 擴充區域位於 的主要部分 CTaskDialog,位於標題和內容字串底下。

CTaskDialog第一次顯示 時,它不會顯示展開的資訊,並將放在strCollapsedLabel展開按鈕旁邊。 當使用者按兩下展開按鈕時,會顯示 CTaskDialog strExpandedInformation,並將標籤變更為 strExpandedLabel

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

// Setting new information to be able to reuse the dialog resource
taskDialog.SetWindowTitle(L"New title for the task dialog");
taskDialog.SetContent(L"New message to show the user.");
taskDialog.SetMainInstruction(L"Even more important!");
taskDialog.SetMainIcon(TD_ERROR_ICON);
taskDialog.SetDialogWidth(300);

// Add a footer
taskDialog.SetFooterText(L"Footer information for the dialog.");
taskDialog.SetFooterIcon(TD_INFORMATION_ICON);

// Add expansion information
taskDialog.SetExpansionArea(L"Additional information\non two lines.",
                            L"Click here for more information.",
                            L"Click here to hide the extra information.");

// Change the options to show the expanded information by default.
// It is necessary to retrieve the current options first.
int options = taskDialog.GetOptions();
options |= TDF_EXPANDED_BY_DEFAULT;
taskDialog.SetOptions(options);

taskDialog.DoModal();

CTaskDialog::SetFooterIcon

更新的 CTaskDialog頁尾圖示。

void SetFooterIcon(HICON hFooterIcon);
void SetFooterIcon(LPCWSTR lpszFooterIcon);

參數

hFooterIcon
[in]的新圖示 CTaskDialog

lpszFooterIcon
[in]的新圖示 CTaskDialog

備註

頁尾圖示會顯示在 CTaskDialog 類別底部。 它可以有相關聯的頁尾文字。 您可以使用 CTaskDialog::SetFooterText 來變更頁尾文字

如果 CTaskDialog 顯示 或輸入參數為 NULL,這個方法會擲回 ENSURE 巨集例外狀況。

CTaskDialog只能接受 HICONLPCWSTR 作為頁尾圖示。 這是藉由在建構函式或 CTaskDialog::SetOptions 中設定選項TDF_USE_HICON_FOOTER來設定。 根據預設,會 CTaskDialog 設定為使用 LPCWSTR 做為頁尾圖標的輸入類型。 如果您嘗試使用不適當的類型設定圖示,此方法會產生例外狀況。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

// Setting new information to be able to reuse the dialog resource
taskDialog.SetWindowTitle(L"New title for the task dialog");
taskDialog.SetContent(L"New message to show the user.");
taskDialog.SetMainInstruction(L"Even more important!");
taskDialog.SetMainIcon(TD_ERROR_ICON);
taskDialog.SetDialogWidth(300);

// Add a footer
taskDialog.SetFooterText(L"Footer information for the dialog.");
taskDialog.SetFooterIcon(TD_INFORMATION_ICON);

// Add expansion information
taskDialog.SetExpansionArea(L"Additional information\non two lines.",
                            L"Click here for more information.",
                            L"Click here to hide the extra information.");

// Change the options to show the expanded information by default.
// It is necessary to retrieve the current options first.
int options = taskDialog.GetOptions();
options |= TDF_EXPANDED_BY_DEFAULT;
taskDialog.SetOptions(options);

taskDialog.DoModal();

CTaskDialog::SetFooterText

更新 頁尾 CTaskDialog上的文字。

void SetFooterText(const CString& strFooterText);

參數

strFooterText
[in]頁尾的新文字。

備註

頁尾圖示會出現在 底部 CTaskDialog的頁尾文字旁邊。 您可以使用 CTaskDialog::SetFooterIcon 來變更頁尾圖示

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

// Setting new information to be able to reuse the dialog resource
taskDialog.SetWindowTitle(L"New title for the task dialog");
taskDialog.SetContent(L"New message to show the user.");
taskDialog.SetMainInstruction(L"Even more important!");
taskDialog.SetMainIcon(TD_ERROR_ICON);
taskDialog.SetDialogWidth(300);

// Add a footer
taskDialog.SetFooterText(L"Footer information for the dialog.");
taskDialog.SetFooterIcon(TD_INFORMATION_ICON);

// Add expansion information
taskDialog.SetExpansionArea(L"Additional information\non two lines.",
                            L"Click here for more information.",
                            L"Click here to hide the extra information.");

// Change the options to show the expanded information by default.
// It is necessary to retrieve the current options first.
int options = taskDialog.GetOptions();
options |= TDF_EXPANDED_BY_DEFAULT;
taskDialog.SetOptions(options);

taskDialog.DoModal();

CTaskDialog::SetMainIcon

更新 的主要圖示 CTaskDialog

void SetMainIcon(HICON hMainIcon);
void SetMainIcon(LPCWSTR lpszMainIcon);

參數

hMainIcon
[in]新的圖示。

lpszMainIcon
[in]新的圖示。

備註

如果 CTaskDialog 顯示 或輸入參數為 NULL,這個方法會擲回 ENSURE 巨集例外狀況。

CTaskDialog只能接受 HICONLPCWSTR 作為主要圖示。 您可以在建構函式或 CTaskDialog::SetOptions 方法中設定TDF_USE_HICON_MAIN選項來設定此設定。 根據預設,會 CTaskDialog 設定為使用 LPCWSTR 作為主要圖示的輸入類型。 如果您嘗試使用不適當的類型設定圖示,此方法會產生例外狀況。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

// Setting new information to be able to reuse the dialog resource
taskDialog.SetWindowTitle(L"New title for the task dialog");
taskDialog.SetContent(L"New message to show the user.");
taskDialog.SetMainInstruction(L"Even more important!");
taskDialog.SetMainIcon(TD_ERROR_ICON);
taskDialog.SetDialogWidth(300);

// Add a footer
taskDialog.SetFooterText(L"Footer information for the dialog.");
taskDialog.SetFooterIcon(TD_INFORMATION_ICON);

// Add expansion information
taskDialog.SetExpansionArea(L"Additional information\non two lines.",
                            L"Click here for more information.",
                            L"Click here to hide the extra information.");

// Change the options to show the expanded information by default.
// It is necessary to retrieve the current options first.
int options = taskDialog.GetOptions();
options |= TDF_EXPANDED_BY_DEFAULT;
taskDialog.SetOptions(options);

taskDialog.DoModal();

CTaskDialog::SetMainInstruction

更新 的主要指示 CTaskDialog

void SetMainInstruction(const CString& strInstructions);

參數

strInstructions
[in]新的主要指示。

備註

類別的主要指示 CTaskDialog 是以大粗體字型向用戶顯示的文字。 它位於標題列下方的對話框中。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

// Setting new information to be able to reuse the dialog resource
taskDialog.SetWindowTitle(L"New title for the task dialog");
taskDialog.SetContent(L"New message to show the user.");
taskDialog.SetMainInstruction(L"Even more important!");
taskDialog.SetMainIcon(TD_ERROR_ICON);
taskDialog.SetDialogWidth(300);

// Add a footer
taskDialog.SetFooterText(L"Footer information for the dialog.");
taskDialog.SetFooterIcon(TD_INFORMATION_ICON);

// Add expansion information
taskDialog.SetExpansionArea(L"Additional information\non two lines.",
                            L"Click here for more information.",
                            L"Click here to hide the extra information.");

// Change the options to show the expanded information by default.
// It is necessary to retrieve the current options first.
int options = taskDialog.GetOptions();
options |= TDF_EXPANDED_BY_DEFAULT;
taskDialog.SetOptions(options);

taskDialog.DoModal();

CTaskDialog::SetOptions

設定的選項 CTaskDialog

void SetOptions(int nOptionFlag);

參數

nOptionFlag
[in]要用於的 CTaskDialog旗標集合。

備註

這個方法會清除 的所有目前選項 CTaskDialog。 若要保留目前的選項,您必須先使用 CTaskDialog::GetOptions 擷取它們,並將其與您想要設定的選項結合。

下表列出所有有效的選項。

名稱 描述
TDF_ENABLE_HYPERLINKS 啟用中的 CTaskDialog超連結。
TDF_USE_HICON_MAIN 設定 CTaskDialog 為將用於 HICON 主要圖示的 。 替代方式是使用 LPCWSTR
TDF_USE_HICON_FOOTER 設定 CTaskDialog 為用於 HICON 頁尾圖示的 。 替代方式是使用 LPCWSTR
TDF_ALLOW_DIALOG_CANCELLATION CTaskDialog讓使用者使用鍵盤或使用對話框右上角的圖示關閉 ,即使 [取消] 按鈕未啟用也一樣。 如果未設定此旗標且 未啟用 [取消 ] 按鈕,使用者就無法使用Alt+F4、Escape 鍵或標題列的關閉按鈕來關閉對話框。
TDF_USE_COMMAND_LINKS CTaskDialog 設定為使用命令按鈕控制件。
TDF_USE_COMMAND_LINKS_NO_ICON 將 設定 CTaskDialog 為使用命令按鈕控制件,而不顯示控制元件旁的圖示。 TDF_USE_COMMAND_LINKS會覆寫TDF_USE_COMMAND_LINKS_NO_ICON。
TDF_EXPAND_FOOTER_AREA 表示展開區域目前已展開。
TDF_EXPANDED_BY_DEFAULT 判斷擴充區域是否預設為展開。
TDF_VERIFICATION_FLAG_CHECKED 表示目前已選取驗證複選框。
TDF_SHOW_PROGRESS_BAR 設定 CTaskDialog 以顯示進度列。
TDF_SHOW_MARQUEE_PROGRESS_BAR 將進度列設定為選框進度列。 如果啟用此選項,您必須將TDF_SHOW_PROGRESS_BAR設定為具有預期的行為。
TDF_CALLBACK_TIMER 表示回 CTaskDialog 呼間隔設定為大約 200 毫秒。
TDF_POSITION_RELATIVE_TO_WINDOW CTaskDialog 設定為相對於父視窗置中。 如果未啟用此旗標,則會 CTaskDialog 相對於監視器置中。
TDF_RTL_LAYOUT 設定 CTaskDialog 從右至左閱讀設定的 。
TDF_NO_DEFAULT_RADIO_BUTTON 表示出現時 CTaskDialog 未選取任何單選按鈕。
TDF_CAN_BE_MINIMIZED 可讓使用者將 最小化 CTaskDialog。 若要支援此選項, CTaskDialog 不可為強制回應。 MFC 不支援此選項,因為 MFC 不支援無 CTaskDialog模式 。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

// Setting new information to be able to reuse the dialog resource
taskDialog.SetWindowTitle(L"New title for the task dialog");
taskDialog.SetContent(L"New message to show the user.");
taskDialog.SetMainInstruction(L"Even more important!");
taskDialog.SetMainIcon(TD_ERROR_ICON);
taskDialog.SetDialogWidth(300);

// Add a footer
taskDialog.SetFooterText(L"Footer information for the dialog.");
taskDialog.SetFooterIcon(TD_INFORMATION_ICON);

// Add expansion information
taskDialog.SetExpansionArea(L"Additional information\non two lines.",
                            L"Click here for more information.",
                            L"Click here to hide the extra information.");

// Change the options to show the expanded information by default.
// It is necessary to retrieve the current options first.
int options = taskDialog.GetOptions();
options |= TDF_EXPANDED_BY_DEFAULT;
taskDialog.SetOptions(options);

taskDialog.DoModal();

CTaskDialog::SetProgressBarMarquee

設定的選框列 CTaskDialog ,並將其新增至對話框。

void SetProgressBarMarquee(
    BOOL bEnabled = TRUE,
    int nMarqueeSpeed = 0);

參數

bEnabled
[in]TRUE 表示啟用選框列;FALSE 表示停用選框列,並將它從 CTaskDialog中移除。

nMarqueeSpeed
[in]整數,表示選框線的速度。

備註

選框列會出現在 類別的主 CTaskDialog 文字下方。

使用 nMarqueeSpeed 來設定選框列的速度;較大的值表示速度較慢。 nMarqueeSpeed 的值為 0,會讓選框列以 Windows 的預設速度移動。

如果 nMarqueeSpeed 小於 0,這個方法會擲回 ENSURE 巨集例外狀況。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

// Add a marquee progress bar.
taskDialog.SetProgressBarMarquee();

taskDialog.DoModal();

// Remove the marquee bar and replace it with a standard progress bar
taskDialog.SetProgressBarMarquee(0);
taskDialog.SetProgressBarRange(0, 100);
taskDialog.SetProgressBarPosition(75);
taskDialog.SetProgressBarState();

taskDialog.DoModal();

CTaskDialog::SetProgressBarPosition

調整進度列的位置。

void SetProgressBarPosition(int nProgressPos);

參數

nProgressPos
[in]進度列的位置。

備註

如果 nProgressPos 不在進度列範圍內,這個方法會擲回 ENSURE 巨集例外狀況。 您可以使用 CTaskDialog::SetProgressBarRange 來變更進度列範圍

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

// Add a marquee progress bar.
taskDialog.SetProgressBarMarquee();

taskDialog.DoModal();

// Remove the marquee bar and replace it with a standard progress bar
taskDialog.SetProgressBarMarquee(0);
taskDialog.SetProgressBarRange(0, 100);
taskDialog.SetProgressBarPosition(75);
taskDialog.SetProgressBarState();

taskDialog.DoModal();

CTaskDialog::SetProgressBarRange

調整進度列的範圍。

void SetProgressBarRange(
    int nRangeMin,
    int nRangeMax);

參數

nRangeMin
[in]進度列的下限。

nRangeMax
[in]進度列的上限。

備註

進度列的位置相對於 nRangeMinnRangeMax。 例如,如果 nRangeMin 為 50 且 nRangeMax 為 100,則 75 的位置會在進度列的一半之間。 使用 CTaskDialog::SetProgressBarPosition 來設定進度列的位置。

若要顯示進度列,必須啟用TDF_SHOW_PROGRESS_BAR選項,且不得啟用TDF_SHOW_MARQUEE_PROGRESS_BAR。 此方法會自動設定TDF_SHOW_PROGRESS_BAR並清除TDF_SHOW_MARQUEE_PROGRESS_BAR。 使用 CTaskDialog::SetOptions 手動變更 CTaskDialog 類別實例的選項。

如果 nRangeMin 不小於 nRangeMax這個方法會擲回 ENSURE 巨集例外狀況。 如果 CTaskDialog 已經顯示 ,而且具有選框進度列,這個方法也會擲回例外狀況。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

// Add a marquee progress bar.
taskDialog.SetProgressBarMarquee();

taskDialog.DoModal();

// Remove the marquee bar and replace it with a standard progress bar
taskDialog.SetProgressBarMarquee(0);
taskDialog.SetProgressBarRange(0, 100);
taskDialog.SetProgressBarPosition(75);
taskDialog.SetProgressBarState();

taskDialog.DoModal();

CTaskDialog::SetProgressBarState

設定進度列的狀態,並在上 CTaskDialog顯示它。

void SetProgressBarState(int nState = PBST_NORMAL);

參數

nState
[in]進度列的狀態。 如需可能的值,請參閱一節。

備註

如果 CTaskDialog 已顯示 ,且具有選框進度列,則這個方法會擲回 ENSURE 巨集例外狀況。

下表列出 nState可能值。 在這些情況下,進度列會填滿一般色彩,直到到達指定的停止位置為止。 此時,它會根據狀態變更色彩。

名稱 描述
PBST_NORMAL 進度列填滿之後, CTaskDialog 不會變更列的色彩。 根據預設,一般色彩為綠色。
PBST_ERROR 進度列填滿之後,會將 CTaskDialog 列的色彩變更為錯誤色彩。 根據預設,這是紅色的。
PBST_PAUSED 進度列填滿之後,會將 CTaskDialog 列的色彩變更為暫停的色彩。 根據預設,這是黃色的。

您可以使用 CTaskDialog::SetProgressBarPosition 來設定進度列停止的位置。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

// Add a marquee progress bar.
taskDialog.SetProgressBarMarquee();

taskDialog.DoModal();

// Remove the marquee bar and replace it with a standard progress bar
taskDialog.SetProgressBarMarquee(0);
taskDialog.SetProgressBarRange(0, 100);
taskDialog.SetProgressBarPosition(75);
taskDialog.SetProgressBarState();

taskDialog.DoModal();

CTaskDialog::SetRadioButtonOptions

啟用或停用單選按鈕。

void SetRadioButtonOptions(
    int nRadioButtonID,
    BOOL bEnabled);

參數

nRadioButtonID
[in]單選按鈕控制件的識別碼。

bEnabled
[in]TRUE 表示啟用單選按鈕;FALSE 可停用單選按鈕。

備註

如果 nRadioButtonID 不是單選按鈕的有效標識符,這個方法會擲回 ENSURE 巨集例外狀況。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

taskDialog.AddRadioButton(201, L"First option");
taskDialog.AddRadioButton(202, L"Second option");
taskDialog.AddRadioButton(203, L"Third option");

taskDialog.DoModal();
int selection = taskDialog.GetSelectedRadioButtonID();

switch (selection)
{
case 201:
   // TODO: Place processing here for the first
   // radio button.
   break;

case 202:
   // TODO: Place processing here for the second
   // radio button.
   break;

case 203:
   // TODO: Place processing here for the third
   // radio button.
   break;

default:
   break;
}

// Remove all the radio buttons so that we can use the same task
// dialog with new radio buttons.
taskDialog.RemoveAllRadioButtons();

taskDialog.AddRadioButton(301, L"New first option");
taskDialog.AddRadioButton(302, L"New second option");
taskDialog.AddRadioButton(303,
                          L"New third option should be disabled");

// Change the default radio button to the second option
taskDialog.SetDefaultRadioButton(302);

// Make sure the third option is disabled.
if (taskDialog.IsRadioButtonEnabled(303))
{
   taskDialog.SetRadioButtonOptions(303, FALSE);
}

taskDialog.DoModal();
selection = taskDialog.GetSelectedRadioButtonID();

switch (taskDialog.GetSelectedRadioButtonID())
{
case 301:
   // TODO: Place processing here for new first
   // command button control.
   break;

case 302:
   // TODO: Place processing here for new second
   // command button control.
   break;

case 303:
   // TODO: Place processing here for the new third
   // command button control.
   break;

default:
   break;
}

// Remove all the radio button controls and add new ones from
// the string table resource.
taskDialog.RemoveAllRadioButtons();
taskDialog.LoadRadioButtons(1001, 1005);

CTaskDialog::SetVerificationCheckbox

設定驗證複選框的核取狀態。

void SetVerificationCheckbox(BOOL bChecked);

參數

bChecked
[in]TRUE 表示顯示 時 CTaskDialog 已選取驗證複選框;FALSE 表示顯示 時 CTaskDialog 未選取驗證複選框。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

// Add the verification checkbox and set the default state.
taskDialog.SetVerificationCheckboxText(L"Remember your selection.");
taskDialog.SetVerificationCheckbox(false);

taskDialog.DoModal();

if (taskDialog.GetVerificationCheckboxState())
{
   // TODO: Write settings of the task dialog to the registry
}

CTaskDialog::SetVerificationCheckboxText

設定顯示在 [驗證] 複選框右邊的文字。

void SetVerificationCheckboxText(CString& strVerificationText);

參數

strVerificationText
[in]這個方法顯示在 [驗證] 複選框旁的文字。

備註

如果類別的CTaskDialog這個實例已經顯示,這個方法會擲回 ENSURE 巨集例外狀況。

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

// Add the verification checkbox and set the default state.
taskDialog.SetVerificationCheckboxText(L"Remember your selection.");
taskDialog.SetVerificationCheckbox(false);

taskDialog.DoModal();

if (taskDialog.GetVerificationCheckboxState())
{
   // TODO: Write settings of the task dialog to the registry
}

CTaskDialog::SetWindowTitle

設定的 CTaskDialog標題。

void SetWindowTitle(CString& strWindowTitle);

參數

strWindowTitle
[in]的新標題 CTaskDialog

備註

範例

// TODO: Replace the strings below with the appropriate message,
// main instruction, and dialog title
CString message("This is an important message to the user.");
CString mainInstruction("Important!\nPlease read!");
CString title("Alert Dialog");

CTaskDialog taskDialog(message, mainInstruction, title,
                       TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);

// Setting new information to be able to reuse the dialog resource
taskDialog.SetWindowTitle(L"New title for the task dialog");
taskDialog.SetContent(L"New message to show the user.");
taskDialog.SetMainInstruction(L"Even more important!");
taskDialog.SetMainIcon(TD_ERROR_ICON);
taskDialog.SetDialogWidth(300);

// Add a footer
taskDialog.SetFooterText(L"Footer information for the dialog.");
taskDialog.SetFooterIcon(TD_INFORMATION_ICON);

// Add expansion information
taskDialog.SetExpansionArea(L"Additional information\non two lines.",
                            L"Click here for more information.",
                            L"Click here to hide the extra information.");

// Change the options to show the expanded information by default.
// It is necessary to retrieve the current options first.
int options = taskDialog.GetOptions();
options |= TDF_EXPANDED_BY_DEFAULT;
taskDialog.SetOptions(options);

taskDialog.DoModal();

CTaskDialog::ShowDialog

建立並顯示 CTaskDialog

static INT_PTR ShowDialog(
    const CString& strContent,
    const CString& strMainInstruction,
    const CString& strTitle,
    int nIDCommandControlsFirst,
    int nIDCommandControlsLast,
    int nCommonButtons = TDCBF_YES_BUTTON | TDCBF_NO_BUTTON,
    int nTaskDialogOptions = TDF_ENABLE_HYPERLINKS | TDF_USE_COMMAND_LINKS,
    const CString& strFooter = _T(""));

參數

strContent
[in]要用於之內容的 CTaskDialog字串。

strMainInstruction
[in]的主要指示 CTaskDialog

strTitle
[in]的 CTaskDialog標題。

nIDCommandControlsFirst
[in]第一個命令的字串標識碼。

nIDCommandControlsLast
[in]最後一個命令的字串標識碼。

nCommonButtons
[in]要加入至的 CTaskDialog按鈕遮罩。

nTaskDialogOptions
[in]要用於 CTaskDialog的選項集。

strFooter
[in]要當做頁尾使用的字串。

傳回值

整數,對應至使用者所做的選取範圍。

備註

這個靜態方法可讓您建立 類別的實例, CTaskDialog 而不需在程式代碼中明確建立 CTaskDialog 物件。 因為沒有 CTaskDialog 物件,所以如果您使用此方法向用戶顯示 CTaskDialog ,則無法呼叫的任何其他方法CTaskDialog

這個方法會使用應用程式資源檔中的數據來建立命令按鈕控制件。 資源檔中的字串數據表有數個字串與相關聯的字串標識碼。 這個方法會在包含 nIDCommandControlsFirst 和 nCommandControlsLast 之間,針對字串數據表中的每個有效專案新增命令按鈕控件。 對於這些命令按鈕控制件,字串數據表中的字串是控件的標題,而字串標識元則是控制件的識別碼。

如需有效選項的清單,請參閱 CTaskDialog::SetOptions

當使用者 CTaskDialog 選取通用按鈕、指令連結控制項或關閉 時 CTaskDialog關閉 。 傳回值是指出使用者如何關閉對話框的標識碼。

範例

// TODO: Replace the string below with the actual message to the user
CString message("Important information to the user");
// TODO: Replace the string below with the title of this project
CString title("Project Title");

CString emptyString;

if (CTaskDialog::IsSupported())
{
   CTaskDialog::ShowDialog(message, emptyString, title, 0, 0,
                           TDCBF_OK_BUTTON);
}
else
{
   AfxMessageBox(message);
}

CTaskDialog::TaskDialogCallback

架構會呼叫此方法,以回應各種 Windows 訊息。

friend:
HRESULT TaskDialogCallback(
    HWND hWnd,
    UINT uNotification,
    WPARAM wParam,
    LPARAM lParam,
    LONG_PTR dwRefData);

參數

hwnd
[in]結構的m_hWndCTaskDialog句柄。

uNotification
[in]指定所產生訊息的通知程序代碼。

wParam
[in]訊息的詳細資訊。

lParam
[in]訊息的詳細資訊。

dwRefData
[in]回呼訊息所套用之 物件的指標 CTaskDialog

傳回值

取決於特定的通知程序代碼。 如需詳細資訊,請參閱<備註>一節。

備註

的預設實作TaskDialogCallback會處理特定訊息,然後呼叫 CTaskDialog 類別的適當 On 方法。 例如,為了回應TDN_BUTTON_CLICKED訊息, TaskDialogCallback 呼叫 CTaskDialog::OnCommandControlClick

wParam 和 lParam 的值取決於特定產生的訊息。 這兩個值都可以是空的。 下表列出支持的預設通知,以及 wParamlParam 的值代表的內容。 如果您在衍生類別中覆寫此方法,您應該為下表中的每個訊息實作回呼程序代碼。

通知訊息 wParam lParam
TDN_CREATED 未使用。 未使用。
TDN_NAVIGATED 未使用。 未使用。
TDN_BUTTON_CLICKED 命令按鈕控制件識別碼。 未使用。
TDN_HYPERLINK_CLICKED 未使用。 包含連結的 LPCWSTR 結構。
TDN_TIMER 建立 之後 CTaskDialog 的毫秒或定時器重設的時間。 未使用。
TDN_DESTROYED 未使用。 未使用。
TDN_RADIO_BUTTON_CLICKED 單選按鈕標識碼。 未使用。
TDN_DIALOG_CONSTRUCTED 未使用。 未使用。
TDN_VERIFICATION_CLICKED 如果核取複選框,則為 1,如果不是,則為 0。 未使用。
TDN_HELP 未使用。 未使用。
TDN_EXPANDO_BUTTON_CLICKED 如果展開區域已折疊,則為0;如果顯示展開文字,則為非零。 未使用。

另請參閱

類別
CObject 類別
階層架構圖表
逐步解說:將 CTaskDialog 新增至應用程式