TaskDialogIndirect 函式 (commctrl.h)

TaskDialogIndirect 函式會建立、顯示及操作工作對話方塊。 工作對話框包含應用程式定義的圖示、訊息、標題、驗證複選框、命令連結、按鈕和單選按鈕。 此函式可以註冊回呼函式來接收通知訊息。

語法

HRESULT TaskDialogIndirect(
  [in]            const TASKDIALOGCONFIG *pTaskConfig,
  [out, optional] int                    *pnButton,
  [out, optional] int                    *pnRadioButton,
  [out, optional] BOOL                   *pfVerificationFlagChecked
);

參數

[in] pTaskConfig

類型: const TASKDIALOGCONFIG*

TASKDIALOGCONFIG 結構的指標,其中包含用來顯示工作對話框的資訊。

[out, optional] pnButton

類型: int*

接收下列其中一個變數的位址:

  • pTaskConfig 參數之 pButtons 成員中指定的其中一個按鈕識別碼
  • 下列其中一個值:
描述
0 函數調用失敗。 如需詳細資訊,請參閱傳回值。
IDCANCEL 已選取 [取消] 按鈕、按下 Alt-F4、按下逸出,或使用者按兩下關閉視窗按鈕。
IDNO 選取按鈕。
IDOK 已選取 [確定] 按鈕。
IDRETRY 已選取 [重試] 按鈕。
IDYES 已選取 [是] 按鈕。
 

如果此參數為 NULL,則不會傳回任何值。

[out, optional] pnRadioButton

類型: int*

變數的位址,該變數會接收 pTaskConfig 參數之 pRadioButtons 成員中指定的其中一個按鈕識別碼。 如果此參數為 NULL,則不會傳回任何值。

[out, optional] pfVerificationFlagChecked

類型: BOOL*

接收下列其中一個值的變數位址。

Description
TRUE 關閉對話框時會核取驗證複選框。
FALSE 關閉對話框時未核取驗證複選框。
 

如果此參數為 NULL,則會停用驗證複選框。

傳回值

類型: HRESULT

此函式可以傳回其中一個值。

傳回碼 描述
S_OK
作業已成功完成。
E_OUTOFMEMORY
記憶體不足,無法完成作業。
E_INVALIDARG
一或多個自變數無效。
E_FAIL
作業失敗。

備註

當您使用工作對話框來指出系統記憶體不足時, TASKDIALOGCONFIG 結構中各種字串和圖示成員所指向的字串不應從資源檔取得,因為嘗試載入資源可能會失敗。

如果您在對話方塊存在時建立工作對話框,請使用對話框的句柄做為 hWndParent 參數。 hWndParent 參數不應該識別子視窗,例如對話框中的控件。

呼叫此函式時,不應該隱藏或停用父視窗。


int nButtonPressed                  = 0;
TASKDIALOGCONFIG config             = {0};
const TASKDIALOG_BUTTON buttons[]   = { 
                                        { IDOK, L"Change password" }
                                      };
config.cbSize                       = sizeof(config);
config.hInstance                    = hInst;
config.dwCommonButtons              = TDCBF_CANCEL_BUTTON;
config.pszMainIcon                  = TD_WARNING_ICON;
config.pszMainInstruction           = L"Change Password";
config.pszContent                   = L"Remember your changed password.";
config.pButtons                     = buttons;
config.cButtons                     = ARRAYSIZE(buttons);

TaskDialogIndirect(&config, &nButtonPressed, NULL, NULL);
switch (nButtonPressed)
{
    case IDOK:
        break; // the user pressed button 0 (change password).
    case IDCANCEL:
        break; // user canceled the dialog
    default:
        break; // should never happen
}

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 commctrl.h (包括 Commctrl.h)
程式庫 Comctl32.lib
Dll Comctl32.dll (版本 6)

另請參閱

對話框