Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa procedura dettagliata presenta la CTaskDialog classe e mostra come aggiungerla all'applicazione.
Il CTaskDialog è una finestra di dialogo attività che sostituisce la finestra di messaggio di Windows in Windows Vista o versione successiva. La CTaskDialog migliora la finestra di messaggio originale e aggiunge funzionalità. La finestra di messaggio di Windows è ancora supportata in Visual Studio.
Annotazioni
Le versioni di Windows precedenti a Windows Vista non supportano .CTaskDialog È necessario programmare un'opzione alternativa della finestra di dialogo se si desidera visualizzare un messaggio a un utente che esegue l'applicazione in una versione precedente di Windows. È possibile usare il metodo statico CTaskDialog::IsSupported per determinare in fase di esecuzione se il computer di un utente può visualizzare un oggetto CTaskDialog. Inoltre, CTaskDialog è disponibile solo quando l'applicazione viene compilata con la libreria Unicode.
CTaskDialog supporta diversi elementi facoltativi per raccogliere e visualizzare informazioni. Ad esempio, un CTaskDialog può visualizzare collegamenti ai comandi, pulsanti personalizzati, icone personalizzate e un piè di pagina. Il CTaskDialog include anche diversi metodi che consentono di interrogare lo stato della finestra di dialogo delle attività per determinare quali elementi facoltativi siano stati selezionati dall'utente.
Prerequisiti
Per completare questa procedura dettagliata sono necessari i componenti seguenti:
- Visual Studio 2010 o versione successiva
- Windows Vista o versione successiva
Sostituire la finestra di messaggio di Windows con un CTaskDialog
Di seguito viene illustrato l'uso più semplice di CTaskDialog, che consiste nel sostituire la finestra di messaggio di Windows. In questo esempio viene modificata anche l'icona associata alla finestra di dialogo attività. La modifica dell'icona rende l'oggetto CTaskDialog simile alla finestra di messaggio di Windows.
Usa il Wizard Applicazione MFC per creare un'applicazione Microsoft Foundation Classes (MFC) con tutte le impostazioni predefinite. Vedere Procedura dettagliata: Uso dei nuovi controlli shell MFC per istruzioni su come aprire la procedura guidata per la versione di Visual Studio.
Chiamalo MyProject.
Usare Esplora soluzioni per aprire
MyProject.cpp.Aggiungere
#include "afxtaskdialog.h"dopo l'elenco di inclusioni.Trovare il metodo
CMyProjectApp::InitInstance. Inserire le righe di codice seguenti prima dell'istruzionereturn TRUE;. Questo codice crea le stringhe usate nella finestra di messaggio di Windows o inCTaskDialog.CString message("My message to the user"); CString dialogTitle("My Task Dialog title"); CString emptyString; // Check whether the user's computer supports `CTaskDialog`. // If not, display a Windows message box instead. if (CTaskDialog::IsSupported()) { CTaskDialog taskDialog(message, emptyString, dialogTitle, TDCBF_OK_BUTTON); taskDialog.SetMainIcon(TD_WARNING_ICON); // Set the icon to be the same as the Windows message box taskDialog.DoModal(); } else { AfxMessageBox(message); }
Compilare ed eseguire l'applicazione. L'applicazione visualizza la finestra di dialogo attività dopo l'avvio.
Aggiungere funzionalità a CTaskDialog
Di seguito viene illustrato come aggiungere funzionalità all'oggetto CTaskDialog creato nella procedura precedente. Il codice di esempio illustra come eseguire istruzioni specifiche in base alle selezioni dell'utente.
Passare alla visualizzazione risorse tramite Visualizza>Altre finestre>visualizzazione risorse.
Espandere la visualizzazione risorse nella cartella Tabella stringhe . Espandilo e fai doppio clic su Tabella stringhe.
Scorrere fino alla fine della tabella di stringhe e aggiungere una nuova voce. Modificare l'ID in
TEMP_LINE1. Impostare la didascalia suCommand Line 1.Aggiungere una nuova voce. Modificare l'ID in
TEMP_LINE2. Impostare la didascalia suCommand Line 2.Tornare a
MyProject.cpp.Nella funzione
CMyProjectApp::InitInstance(), dopoCString emptyString;aggiungere il codice seguente:CString expandedLabel("Hide extra information"); CString collapsedLabel("Show extra information"); CString expansionInfo("This is the additional information to the user,\nextended over two lines.");Trova l'istruzione
taskDialog.DoModal()e sostituiscila con il codice riportato di seguito. Questo codice aggiorna la finestra di dialogo attività e aggiunge nuovi controlli: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 a small footnote to the user"); taskDialog.SetVerificationCheckboxText(L"Remember your selection"); INT_PTR result = taskDialog.DoModal(); if (taskDialog.GetVerificationCheckboxState()) { // Your code 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; }
Compilare ed eseguire l'applicazione. L'applicazione visualizza la finestra di dialogo attività che usa i nuovi controlli e informazioni aggiuntive.
Visualizzazione di un oggetto CTaskDialog senza creare un oggetto CTaskDialog
Di seguito viene illustrato come visualizzare un oggetto CTaskDialog senza prima creare un CTaskDialog oggetto . In questo esempio vengono continuate le procedure precedenti.
Per visualizzare un CTaskDialog senza creare un oggetto CTaskDialog
Aprire il file
MyProject.cpp.Nella funzione
CMyProjectApp::InitInstance(), vai alla parentesi di chiusura per l'istruzioneif (CTaskDialog::IsSupported()).Inserire il codice seguente immediatamente prima della parentesi chiusa dell'istruzione
if(prima delelseblocco):HRESULT result2 = CTaskDialog::ShowDialog(L"My error message", L"Error", L"New Title", TEMP_LINE1, TEMP_LINE2);
Compilare ed eseguire l'applicazione. L'applicazione visualizza due finestre di dialogo dei compiti. La prima finestra di dialogo è dalla procedura To Add Functionality alla routine CTaskDialog ; la seconda finestra di dialogo deriva dalla procedura precedente.
Questi esempi non illustrano tutte le opzioni disponibili per un CTaskDialog, ma dovrebbero essere utili per iniziare. Per una descrizione completa della classe, vedere Classe CTaskDialog .
Vedere anche
finestre di dialogo
Classe CTaskDialog
CTaskDialog::CTaskDialog