MFC - Caixas de Diálogo

Neste capítulo, iremos cobrir as caixas de diálogo. Aplicativos para Windows freqüentemente se comunicam com o usuário por meio de caixas de diálogo.CDialog classfornece uma interface para gerenciar caixas de diálogo. O editor de diálogo Visual C ++ torna mais fácil projetar caixas de diálogo e criar seus recursos de modelo de diálogo.

  • Criar um objeto de diálogo é uma operação de duas fases -

    • Construa o objeto de diálogo.

    • Crie a janela de diálogo.

Vejamos um exemplo simples criando um novo projeto Win32.

Step 1 - Abra o Visual Studio e clique na opção de menu Arquivo → Novo → Projeto.

Step 2 - Agora você pode ver a caixa de diálogo Novo Projeto.

Step 3 - No painel esquerdo, selecione Modelos → Visual C ++ → Win32.

Step 4 - No painel do meio, selecione Projeto Win32.

Step 5- Digite o nome do projeto 'MFCDialogDemo' no campo Nome e clique em OK para continuar. Você verá a seguinte caixa de diálogo.

Step 6 - Clique em Avançar.

Step 7 - Selecione as opções mostradas na caixa de diálogo fornecida acima e clique em Concluir.

Step 8 - Um projeto vazio é criado.

Step 9 - Para torná-lo um projeto MFC, clique com o botão direito do mouse no projeto e selecione Propriedades.

Step 10 - Na seção esquerda, clique em Propriedades de configuração → Geral.

Step 11 - Selecione a opção Usar MFC na DLL compartilhada na seção Padrões do projeto e clique em OK.

Step 12 - Adicione um novo arquivo de origem.

Step 13 - Clique com o botão direito em seu Projeto e selecione Adicionar → Novo Item.

Step 14 - Na seção Modelos, clique em Arquivo C ++ (.cpp)

Step 15 - Defina o nome como exemplo e clique em Adicionar.

Step 16 - Para criar um aplicativo, precisamos adicionar uma classe e derivá-la do CWinApp do MFC.

#include <afxwin.h>

class CExample : public CWinApp {
   public:
      BOOL InitInstance();
};

Criação de caixa de diálogo

Step 1 - Para criar uma caixa de diálogo, clique com o botão direito na pasta Arquivos de recursos no gerenciador de soluções e selecione Adicionar → Recurso.

Step 2 - Na caixa de diálogo Adicionar recurso, selecione Diálogo e clique em Novo.

Step 3 - Uma caixa de diálogo requer alguma preparação antes de realmente criá-la programaticamente.

Step 4 - Uma caixa de diálogo pode primeiro ser criada manualmente como um arquivo de texto (em um arquivo de recurso).

Step 5 - Agora você pode ver o arquivo MFCDialogDemo.rc criado em Arquivos de recursos.

Step 6- O arquivo de recurso está aberto no designer. O mesmo pode ser aberto como um arquivo de texto. Clique com o botão direito no arquivo de recurso e selecione Abrir com.

Step 7 - Selecione o editor de código-fonte (texto) e clique no botão Adicionar.

Step 8 - Volte para o designer e clique com o botão direito na caixa de diálogo e selecione Propriedades.

Step 9 - Você precisa escolher entre muitas opções.

Step 10- Como a maioria dos outros controles, uma caixa de diálogo deve ser identificada. O identificador (ID) de uma caixa de diálogo geralmente começa com IDD_, vamos mudar o ID para IDD_EXAMPLE_DLG.

Localização de diálogo

Uma caixa de diálogo deve estar “fisicamente” localizada em um aplicativo. Como uma caixa de diálogo geralmente é criada como pai de outros controles, sua localização depende de seu relacionamento com a janela pai ou com a área de trabalho.

Se você olhar a janela Propriedades, verá dois campos, X Pos e Y Pos.

  • X é a distância da borda esquerda do monitor até a borda esquerda da caixa de diálogo.

  • Y é a distância da borda superior do monitor até a borda superior da caixa de diálogo.

Por padrão, esses campos são definidos como zero. Você também pode alterar conforme mostrado acima.

Se você especificar essas duas dimensões como 0, as bordas esquerda e superior da caixa de diálogo serão definidas de forma que o objeto apareça no centro da tela.

Dimensões da caixa de diálogo

As dimensões de uma caixa de diálogo referem-se à sua largura e altura. Você pode redimensionar a largura e altura com a ajuda do mouse na janela do designer.

Você pode ver as mudanças na largura e altura na barra de status.

Métodos de caixa de diálogo

A classe base usada para exibir caixas de diálogo na tela é a classe CDialog. Para criar uma caixa de diálogo, precisamos derivar uma classe de CDialog. A própria classe CDialog fornece três construtores que são os seguintes -

CDialog();
CDialog(UINT nIDTemplate, CWnd* pParentWnd = NULL);
CDialog(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);

Vamos criar outra classe CExampleDlg e derivá-la de CDialog. Implementaremos seu destruidor de construtor padrão, conforme mostrado no código a seguir.

class CExampleDlg : public CDialog {
   public:
      enum { IDD = IDD_EXAMPLE_DLG };
   
      CExampleDlg();
      ~CExampleDlg();
};

CExampleDlg::CExampleDlg():CDialog(CExampleDlg::IDD) {

}

CExampleDlg::~CExampleDlg() {

}

Precisamos instanciar esta caixa de diálogo no método CExample :: InitInstance () conforme mostrado no código a seguir.

BOOL CExample::InitInstance() {
   CExampleDlg myDlg;
   m_pMainWnd = &myDlg;
   
   return TRUE;
}

Caixas de diálogo modais

Existem dois tipos de caixas de diálogo - modeless e modal. As caixas de diálogo modais e não modal diferem pelo processo usado para criá-las e exibi-las.

Caixa de diálogo sem modelo

  • Para uma caixa de diálogo sem janela restrita, você deve fornecer seu próprio construtor público em sua classe de diálogo.

  • Para criar uma caixa de diálogo sem janela restrita, chame seu construtor público e, em seguida, chame a função de membro Criar do objeto de diálogo para carregar o recurso de diálogo.

  • Você pode chamar Create durante ou após a chamada do construtor. Se o recurso de diálogo tiver a propriedade WS_VISIBLE, a caixa de diálogo aparecerá imediatamente.

  • Caso contrário, você deve chamar sua função de membro ShowWindow.

Diálogo modal

  • Para criar uma caixa de diálogo modal, chame um dos dois construtores públicos declarados em CDialog.

  • Em seguida, chame o objeto de diálogo DoModal função de membro para exibir a caixa de diálogo e gerenciar a interação com ela até que o usuário escolha OK ou Cancelar.

  • Esse gerenciamento por DoModal é o que torna a caixa de diálogo modal. Para caixas de diálogo modais, DoModal carrega o recurso de diálogo.

Step 1 - Para exibir a caixa de diálogo como modal, no evento CExample :: InitInstance () chame o método DoModal () usando sua variável de diálogo -

BOOL CExample::InitInstance() {
   CExampleDlg myDlg;
   m_pMainWnd = &myDlg;
   myDlg.DoModal();
   return TRUE;
}

Step 2 - Aqui está a implementação completa do arquivo Example.cpp.

#include <afxwin.h>
#include "resource.h"

class CExample : public CWinApp {
   public:
      BOOL InitInstance();
};
   
class CExampleDlg : public CDialog {
   public:
      enum { IDD = IDD_EXAMPLE_DLG };
   
      CExampleDlg();
     ~CExampleDlg();
};

CExampleDlg::CExampleDlg():CDialog(CExampleDlg::IDD) {

}

CExampleDlg::~CExampleDlg() {

}

BOOL CExample::InitInstance() {
   CExampleDlg myDlg;
   m_pMainWnd = &myDlg;
   myDlg.DoModal();
   return TRUE;
}
CExample MyApp;

Step 3 - Quando o código acima for compilado e executado, você verá a seguinte caixa de diálogo.

Aplicativos baseados em diálogo

O Microsoft Visual Studio fornece uma maneira mais fácil de criar um aplicativo que se baseia principalmente em uma caixa de diálogo. Aqui estão as etapas para criar um projeto de base de diálogo usando modelos de projeto disponíveis no Visual Studio -

Step 1- Abra o Visual Studio e clique na opção de menu Arquivo → Novo → Projeto. Você pode ver a caixa de diálogo Novo Projeto.

Step 2 - No painel esquerdo, selecione Modelos → Visual C ++ → MFC.

Step 3 - No painel do meio, selecione Aplicativo MFC.

Step 4- Insira o nome do projeto 'MFCModalDemo' no campo Nome e clique em OK para continuar. Você verá a seguinte caixa de diálogo.

Step 5 - Clique em Avançar.

Step 6 - Selecione as opções mostradas na caixa de diálogo acima e clique em Avançar.

Step 7 - Marque todas as opções que você escolheu para ter em sua caixa de diálogo, como Maximize e Minimize Boxes e clique em Next.

Step 8 - Clique em Avançar.

Step 9- Vai gerar essas duas classes. Você pode alterar o nome das classes e clicar em Concluir.

Step 10 - Agora você pode ver que o assistente do MFC cria essa caixa de diálogo e os arquivos de projeto por padrão.

Step 11 - Ao executar este aplicativo, você verá a seguinte saída.