逐步解說: 在應用程式中加入 CTaskDialog
此逐步解說介紹CTaskDialog 類別並教您如何將其加入至應用程式。
CTaskDialog工作] 對話方塊,它會取代在 [視窗] 訊息方塊是Windows Vista。 CTaskDialog可改善其原始的訊息方塊,並新增功能。 Windows 訊息方塊時,強烈建議您使用Visual Studio。
![]() |
---|
Windows 版本早於Windows Vista不支援CTaskDialog。如果您想要顯示一則訊息給在較早版本的 Windows 上執行應用程式的使用者,您必須設計替代的對話方塊選項的程式。您可以使用靜態方法CTaskDialog::IsSupported可以顯示使用者的電腦是否在執行階段判斷CTaskDialog。此外, CTaskDialog使用 Unicode 程式庫所建置的應用程式時才可用。 |
CTaskDialog支援幾個選擇性的項目,來收集及顯示資訊。 例如, CTaskDialog命令連結、 自訂的按鈕、 自訂的圖示和頁尾可以顯示。 CTaskDialog也有數種方法,可讓您查詢的工作] 對話方塊,以判斷何種選擇性的項目狀態選取的使用者。
必要條件
您需要下列元件才能完成此逐步解說:
Visual Studio 2010
Windows Vista
Windows 訊息方塊取代 CTaskDialog
下列程序會示範最基本的使用CTaskDialog,這是要取代的視窗訊息方塊。 本範例也會變更 [工作] 對話方塊的相關圖示。 變更的圖示會讓CTaskDialog會顯示完全相同的視窗訊息方塊。
若要以 CTaskDialog 取代 Windows 訊息方塊
建立新的 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;
加入下列程式碼的程式碼之後,從步驟 4。 這段程式碼可確保使用者的電腦支援CTaskDialog。 如果不支援 [] 對話方塊,應用程式會改顯示視窗訊息方塊。
if (CTaskDialog::IsSupported()) { } else { AfxMessageBox(message); }
將下列程式碼之後, 的括號之間插入if陳述式,從步驟 5。 這段程式碼會建立CTaskDialog。
CTaskDialog taskDialog(message, emptyString, dialogTitle, TDCBF_OK_BUTTON);
在下一行中,加入下列程式碼。 這段程式碼會將警告圖示。
taskDialog.SetMainIcon(TD_WARNING_ICON);
在下一行中,加入下列程式碼。 這段程式碼會顯示 [工作] 對話方塊。
taskDialog.DoModal();
如果您不想,您可以略過步驟 7 CTaskDialog若要以視窗的 [訊息] 方塊中顯示相同的圖示。 如果您省略這個步驟中, 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 sub 程序。 第二個對話方塊是從最後一個程序。
這些範例不會說明所有可用的選項,如CTaskDialog,但應該可以幫助您快速入門。 請參閱CTaskDialog 類別之類別的完整說明。