Condividi tramite


Procedura dettagliata: aggiunta di CTaskDialog a un'applicazione

Questa procedura dettagliata illustra la Classe CTaskDialog e viene illustrato come aggiungerla all'applicazione.

CTaskDialog è una finestra di dialogo che sostituisce la finestra di messaggio di windows in Windows Vista. CTaskDialog migliora la finestra di messaggio originale e aggiunge funzionalità. La finestra di messaggio di Windows è ancora supportata in Visual Studio.

Nota

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 utilizzare il metodo statico CTaskDialog::IsSupported per determinare in fase di esecuzione se il computer di un utente può visualizzare CTaskDialog.Inoltre, CTaskDialog è disponibile solo quando l'applicazione viene compilata con la libreria Unicode.

CTaskDialog supporta diversi elementi opzionali per raccogliere e visualizzare le informazioni. Ad esempio, CTaskDialog può visualizzare link di comando, i pulsanti personalizzati, le icone personalizzate e un footer. CTaskDialog dispone di molti metodi che consentono di eseguire una query sullo stato della finestra di dialogo attività per determinare quali elementi opzionali l'utente ha selezionato.

Prerequisiti

Per completare la procedura dettagliata, è necessario disporre dei componenti seguenti:

  • Visual Studio 2010

  • Windows Vista

Sostituzione di una finestra di messaggio con un CTaskDialog

La procedura riportata di seguito illustrata la maggior parte di utilizzo di base di CTaskDialog, che consente di sostituire la finestra di messaggio di windows. In questo esempio viene modificata l'icona a esso associata alla finestra di dialogo dell'attività. Modificare l'icona permette a CTaskDialog di essere identico alla finestra di messaggio di Windows.

Sostituzione di una finestra di messaggio con un CTaskDialog

  1. Creare un nuovo progetto applicazione MFC con le impostazioni predefinite. Chiamarlo MyProject.

  2. Utilizzare Esplora Soluzioni per aprire il file MyProject.cpp.

  3. Aggiungere #include "afxtaskdialog.h" dopo l'elenco di include.

  4. Trovare il metodo CMyProjectApp::InitInstance. Inserire le seguenti righe di codice prima dell'istruzione di return TRUE;. Questo codice crea le stringhe da utilizzare nella finestra di messaggio di Windows o in CTaskDialog.

    CString message("My message to the user");
    CString dialogTitle("My Task Dialog title");
    CString emptyString;
    
  5. Aggiungere il codice seguente dopo la riga di codice dal passo 4. Questo codice garantisce che il computer supporti CTaskDialog. Se la finestra di dialogo non è supportata, verrà visualizzata invece una finestra di messaggio di Windows.

    if (CTaskDialog::IsSupported())
    {
    
    }
    else
    {
       AfxMessageBox(message);
    }
    
  6. Inserire il codice seguente tra le parentesi dopo l'istruzione di if dal passaggio 5. Questo codice crea CTaskDialog.

    CTaskDialog taskDialog(message, emptyString, dialogTitle, TDCBF_OK_BUTTON);
    
  7. Sulla riga successiva, aggiungere il codice riportato di seguito. Questo codice imposta l'icona di avviso.

    taskDialog.SetMainIcon(TD_WARNING_ICON);
    
  8. Sulla riga successiva, aggiungere il codice riportato di seguito. Questo codice consente di visualizzare la finestra di dialogo dell'attività.

    taskDialog.DoModal();
    

È possibile omettere il passaggio 7 se non si desidera che CTaskDialog visualizzi la stessa icona della finestra di messaggio di Windows. Se si omette tale passaggio, CTaskDialog non ha l'icona quando l'applicazione la visualizzerà.

Compilare l'applicazione ed eseguirla. Verrà visualizzata la finestra di dialogo dell'attività dopo l'avvio.

Aggiungere funzionalità a CTaskDialog.

Nella procedura seguente viene illustrato come aggiungere funzionalità a CTaskDialog creato nella procedura precedente. Nel codice di esempio viene illustrato come eseguire istruzioni specifiche in base alle selezioni dell'utente.

Per aggiungere funzionalità a CTaskDialog

  1. Passare a Visualizzazione Risorse. Se non è possibile visualizzare Visualizzazione Risorse, è possibile aprirlo dal menu Visualizza.

  2. Espandere Visualizzazione Risorse fino a selezionare la cartella Tabella di stringhe. Espanderlo e fare doppio clic sulla voce Tabella di stringhe.

  3. Scorrere fino alla fine della tabella di stringhe e aggiunge una nuova voce. Cambiare l'ID in TEMP_LINE1. Impostare la barra del titolo alla riga di comando 1.

  4. Aggiungere un'altra nuova voce. Cambiare l'ID in TEMP_LINE2. Impostare la barra del titolo alla riga di comando 2.

  5. Tornare a MyProject.cpp.

  6. Aggiungere le seguenti righe di codice dopo 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.");
    
  7. Trovare l'istruzione taskDialog.DoModal() e sostituirla con il seguente codice. Questo codice aggiorna la finestra di dialogo dell'attività e aggiunge nuovi comandi:

    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");
    
  8. Aggiungere la seguente riga di codice che visualizza la finestra di dialogo dell'attività all'utente e recupera la selezione dell'utente:

    INT_PTR result = taskDialog.DoModal();
    
  9. Inserire il codice seguente dopo la chiamata all'evento taskDialog.DoModal(). Questa sezione di codice elabora l'input utente:

    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;
    }
    

Nel codice riportato al passaggio 9, sostituire i commenti che iniziano con PROCESS IF con il codice da eseguire nelle condizioni specificate.

Compilare l'applicazione ed eseguirla. Verrà visualizzata la finestra di dialogo dell'attività che utilizzano i nuovi controlli e informazioni aggiuntive.

Visualizzare un CTaskDialog senza creare un oggetto di CTaskDialog

Nella procedura seguente viene illustrato come visualizzare CTaskDialog senza prima creare un oggetto di CTaskDialog. Questo esempio continua le procedure precedenti.

Per visualizzare un CTaskDialog senza creare un oggetto di CTaskDialog

  1. Aprire il file di MyProject.cpp se non è già aperto.

  2. Passare alla parentesi di chiusura per l'istruzione di if (CTaskDialog::IsSupported()).

  3. Inserire il seguente codice prima della parentesi di chiusura dell'istruzione di if (prima di else ):

    HRESULT result2 = CTaskDialog::ShowDialog(L"My error message", L"Error", L"New Title", TEMP_LINE1, TEMP_LINE2);
    

Compilare l'applicazione ed eseguirla. L'applicazione visualizza due finestre di dialogo. La prima finestra di dialogo proviene da "To Add Functionality" della procedura CTaskDialog; la seconda finestra di dialogo è originata dall'ultima procedura.

In questi esempi non vengono illustrate le opzioni disponibili per CTaskDialog, ma devono iniziare a utilizzarli. Consultare Classe CTaskDialog per una descrizione completa della classe.

Vedere anche

Riferimenti

Classe CTaskDialog

CTaskDialog::CTaskDialog

Concetti

Finestre di dialogo