Compartilhar via


Passo a passo: Adicionando um CTaskDialog a um aplicativo

Esta explicação passo a passo apresenta o Classe CTaskDialog e mostra como adicionar um aplicativo.

O CTaskDialog é uma caixa de diálogo de tarefa que substitui a caixa de mensagem do Windows em Windows Vista.O CTaskDialog melhora a caixa de mensagem original e adiciona funcionalidade.A caixa de mensagem do Windows ainda tem suporte no Visual Studio.

ObservaçãoObservação

Versões do Windows anteriores ao Windows Vista não oferecem suporte a CTaskDialog.Você deve programar uma opção de caixa de diálogo alternativo se desejar mostrar uma mensagem a um usuário que executa o aplicativo em uma versão anterior do Windows.Você pode usar o método estático CTaskDialog::IsSupported para determinar em tempo de execução se o computador de um usuário pode exibir um CTaskDialog.Além disso, o CTaskDialog só está disponível quando o aplicativo é criado com a biblioteca de Unicode.

O CTaskDialog oferece suporte a vários elementos opcionais para coletar e exibir informações.Por exemplo, um CTaskDialog pode exibir links de comando, botões personalizados, ícones personalizados e um rodapé.O CTaskDialog também tem vários métodos que permitem que você consultar o estado da caixa de diálogo de tarefa para determinar quais elementos opcionais do usuário selecionado.

Pré-requisitos

Para completar este passo-a-passo, são necessários os seguintes componentes:

  • Visual Studio 2010

  • Windows Vista

Substituindo uma caixa de mensagem do Windows com um CTaskDialog

O procedimento a seguir demonstra o uso mais básico do CTaskDialog, que é substituir a caixa de mensagem do Windows.Este exemplo também altera o ícone associado a caixa de diálogo de tarefa.Alterar o ícone torna o CTaskDialog são idênticos a caixa de mensagem do Windows.

Para substituir uma caixa de mensagem do Windows com um CTaskDialog

  1. Crie um novo projeto de aplicativo do MFC com as configurações padrão.Chamá-lo MyProject.

  2. Use o Solution Explorer para abrir o arquivo MyProject.cpp.

  3. Adicionar #include "afxtaskdialog.h" após a lista de inclui.

  4. Localizar o método CMyProjectApp::InitInstance.Insira as seguintes linhas de código antes de return TRUE; instrução.Esse código cria as seqüências de caracteres que podemos usar a caixa de mensagem Windows ou no CTaskDialog.

    CString message("My message to the user");
    CString dialogTitle("My Task Dialog title");
    CString emptyString;
    
  5. Adicione o seguinte código após o código da etapa 4.Este código garante que o computador do usuário oferece suporte a CTaskDialog.Se não há suporte para a caixa de diálogo, o aplicativo exibe uma caixa de mensagem do Windows.

    if (CTaskDialog::IsSupported())
    {
    
    }
    else
    {
       AfxMessageBox(message);
    }
    
  6. Insira o seguinte código entre colchetes após o if instrução da etapa 5.Esse código cria o CTaskDialog.

    CTaskDialog taskDialog(message, emptyString, dialogTitle, TDCBF_OK_BUTTON);
    
  7. Na próxima linha, adicione o seguinte código.Esse código define o ícone de aviso.

    taskDialog.SetMainIcon(TD_WARNING_ICON);
    
  8. Na próxima linha, adicione o seguinte código.Esse código exibe a caixa de diálogo de tarefa.

    taskDialog.DoModal();
    

Você pode omitir a etapa 7 se não quiser o CTaskDialog para exibir o ícone mesmo que a caixa de mensagem do Windows.Se você pular essa etapa, o CTaskDialog não tem um ícone quando o aplicativo for exibido.

Compile e execute o aplicativo.O aplicativo exibe a caixa de diálogo de tarefa após ele ser iniciado.

Adicionando funcionalidade para o CTaskDialog

O procedimento a seguir mostra como adicionar funcionalidade para o CTaskDialog que você criou no procedimento anterior.O exemplo de código mostra como executar instruções específicas com base nas seleções do usuário.

Para adicionar funcionalidade para o CTaskDialog

  1. Navegue até o exibição de recurso.Se você não vir o Exibição de recurso, você pode abri-lo do modo menu.

  2. Expanda o Exibição de recurso até que você pode selecionar o Tabela de seqüência de caracteres pasta.Expandi-la e clique duas vezes o Tabela de seqüência de caracteres entrada.

  3. Role para a parte inferior da tabela de seqüência de caracteres e adicionar uma nova entrada.Alterar a identificação de TEMP_LINE1.Defina a legenda para 1 linha de comando.

  4. Adicione nova entrada de outra.Alterar a identificação de TEMP_LINE2.Defina a legenda para a linha de comando 2.

  5. Navegue para MyProject.cpp.

  6. Depois de CString emptyString;, adicione o seguinte código:

    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. Encontrar o taskDialog.DoModal() instrução e substituir essa declaração com o código a seguir.Esse código atualiza a caixa de diálogo de tarefa e adiciona novos controles:

    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. Adicione a seguinte linha de código que exibe a caixa de diálogo de tarefa para o usuário e recupera a seleção do usuário:

    INT_PTR result = taskDialog.DoModal();
    
  9. Insira o seguinte código após a chamada para taskDialog.DoModal().Esta seção do código processa a entrada do usuário:

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

O código na etapa 9, substitua os comentários que começam com o processo se com o código que você deseja executar sob condições especificadas.

Compile e execute o aplicativo.O aplicativo exibe a caixa de diálogo de tarefa que usa os novos controles e informações adicionais.

Exibindo um CTaskDialog sem criar um objeto CTaskDialog

O procedimento a seguir mostra como exibir um CTaskDialog sem primeiro criar um CTaskDialog objeto.Este exemplo continua os procedimentos anteriores.

Para exibir um CTaskDialog sem criar um objeto CTaskDialog

  1. Se não estiver aberto, abra o arquivo MyProject.cpp.

  2. Navegue até o colchete de fechamento para o if (CTaskDialog::IsSupported()) instrução.

  3. Insira o seguinte código imediatamente antes do colchete de fechamento do if instrução (antes de else bloco):

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

Compile e execute o aplicativo.O aplicativo exibe duas caixas de diálogo de tarefa.É a primeira caixa de diálogo da funcionalidade de adicionar o procedimento de CTaskDialog; é a segunda caixa de diálogo do último procedimento.

Esses exemplos não demonstram todas as opções disponíveis para um CTaskDialog, mas deve ajudá-lo a começar.Consulte Classe CTaskDialog para obter uma descrição completa da classe.

Consulte também

Referência

Classe CTaskDialog

CTaskDialog::CTaskDialog

Conceitos

Caixas de diálogo