Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este passo a passo apresenta a classe CTaskDialog e mostra como adicioná-la ao seu aplicativo.
O CTaskDialog é uma caixa de diálogo de tarefa que substitui a caixa de mensagem do Windows no Windows Vista ou posterior. O CTaskDialog melhora na caixa de mensagem original e adiciona funcionalidade. A caixa de mensagem do Windows ainda tem suporte no Visual Studio.
Nota
Versões do Windows anteriores ao Windows Vista não dão suporte ao CTaskDialog. Você deve programar uma opção de caixa de diálogo alternativa se quiser mostrar uma mensagem para 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ó estará disponível quando seu aplicativo for criado com a biblioteca Unicode.
O CTaskDialog dá 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 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
Substituir 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 assistente de aplicativo MFC para criar um aplicativo MFC (Microsoft Foundation Classes) com todas as configurações padrão. Consulte Passo a passo: usando os novos controles de shell do MFC para obter instruções sobre como abrir o assistente para sua versão do Visual Studio.
Chame-o MyProject.
Use o do Gerenciador de Soluções para abrir
MyProject.cpp.Adicione
#include "afxtaskdialog.h"após a lista de inclusões.Localize 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 após o início.
Adicionar funcionalidade ao CTaskDialog
O exemplo 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é o no Modo de Exibição de Recursos via Exibir>Outras Janelas>Modo de Exibição de Recursos.
Expanda a Exibição de Recurso para a pasta Tabela de Cadeia de Caracteres. Expanda a tabela de cadeia de caracteres e clique duas vezes em.
Role até a parte inferior da tabela de cadeia de caracteres e adicione uma nova entrada. Altere a ID para
TEMP_LINE1. Defina a legenda comoCommand Line 1.Adicione outra nova entrada. Altere a ID para
TEMP_LINE2. Defina a legenda comoCommand Line 2.Navegue de volta para
MyProject.cpp.Na função
CMyProjectApp::InitInstance(), depois deCString emptyString;adicionar 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.");Localize a instrução
taskDialog.DoModal()e substitua essa instrução 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 da tarefa que usa os novos controles e informações adicionais.
Exibindo um CTaskDialog sem criar um objeto CTaskDialog
O exemplo a seguir mostra como exibir um CTaskDialog sem criar primeiro 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 código a seguir 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 tarefa. A primeira caixa de diálogo é do Para Adicionar Funcionalidade ao procedimento de CTaskDialog; a segunda caixa de diálogo é do procedimento anterior.
Esses exemplos não demonstram todas as opções disponíveis para um CTaskDialog, mas devem ajudá-lo a começar. Consulte classe CTaskDialog para obter uma descrição completa da classe.
Consulte também
Caixas de diálogo
classe CTaskDialog
CTaskDialog::CTaskDialog