Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este passo a passo apresenta a classe CTaskDialog e mostra como adicioná-la ao seu aplicativo.
A CTaskDialog é uma caixa de diálogo de tarefa que substitui a caixa de mensagem do Windows no Windows Vista ou posterior. O CTaskDialog melhora a caixa de mensagem original e adiciona funcionalidade. A caixa de mensagem do Windows ainda é suportada no Visual Studio.
Observação
As versões do Windows anteriores ao Windows Vista não suportam o CTaskDialog. Você deve programar uma opção de caixa de diálogo alternativa se quiser mostrar uma mensagem a um usuário que executa seu 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 seu aplicativo é criado com a biblioteca Unicode.
O CTaskDialog suporta vários elementos opcionais para reunir 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 consultar o estado da caixa de diálogo da tarefa para determinar quais elementos opcionais o usuário selecionou.
Pré-requisitos
Você precisa dos seguintes componentes para concluir este passo a passo:
- Visual Studio 2010 ou posterior
- Windows Vista ou posterior
Substitua a caixa de mensagem do Windows por um CTaskDialog
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 à caixa de diálogo da tarefa. Alterar o ícone faz com que o CTaskDialog pareça semelhante à caixa de mensagem do Windows.
Use o MFC Application Wizard para criar um aplicativo Microsoft Foundation Classes (MFC) com todas as configurações padrão. Consulte Passo a passo: Usando os novos controles de shell MFC para obter instruções sobre como abrir o assistente para sua versão do Visual Studio.
Nomeie-o MyProject.
Use o Gerenciador de Soluções para abrir
MyProject.cpp.Adicione
#include "afxtaskdialog.h"após a lista de inclusões.Encontre o método
CMyProjectApp::InitInstance. Insira as seguintes linhas de código antes da instruçãoreturn TRUE;. Esse código cria as cadeias de caracteres que usamos na caixa de mensagem do Windows ou noCTaskDialog.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); }
Compile e execute o aplicativo. O aplicativo exibe a caixa de diálogo da tarefa depois que ela é iniciada.
Adicionar funcionalidade ao CTaskDialog
A seguir mostra como adicionar funcionalidade ao CTaskDialog que você criou no procedimento anterior. O código de exemplo mostra como executar instruções específicas com base nas seleções do usuário.
Navegue até Vista de Recursos através de Vista>Outras Janelas>Vista de Recursos.
Expanda a Modo de Exibição de Recursos para a pasta Tabela de Cadeia de Caracteres. Expanda-o e clique duas vezes String Table.
Role até a parte inferior da tabela de cadeia de caracteres e adicione uma nova entrada. Altere o ID para
TEMP_LINE1. Defina a legenda comoCommand Line 1.Adicione outra nova entrada. Altere o ID para
TEMP_LINE2. Defina a legenda comoCommand Line 2.Navegue de volta para
MyProject.cpp.Na função
CMyProjectApp::InitInstance(), apósCString 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.");Encontre a instrução
taskDialog.DoModal()e substitua-a pelo código a seguir. Esse código atualiza a caixa de diálogo da 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 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; }
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
A seguir mostra como exibir um CTaskDialog sem primeiro criar um objeto CTaskDialog. Este exemplo continua os procedimentos anteriores.
Para exibir um CTaskDialog sem criar um objeto CTaskDialog
Abra o arquivo
MyProject.cpp.Na função
CMyProjectApp::InitInstance(), navegue até o colchete de fechamento da instruçãoif (CTaskDialog::IsSupported()).Insira o seguinte código imediatamente antes do colchete de fechamento da instrução
if(antes do blocoelse):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 tarefas. A primeira caixa de diálogo é do para adicionar funcionalidade ao procedimento de CTaskDialog; a segunda caixa de diálogo é do procedimento anterior.
Estes exemplos não demonstram todas as opções disponíveis para um CTaskDialog, mas devem ajudá-lo a começar. Consulte de classe CTaskDialog para obter uma descrição completa da classe.
Ver também
Caixas de Diálogo
CTaskDialog Classe
CTaskDialog::CTaskDialog