Partilhar via


Como criar o controle de usuário e hospedá-lo em uma caixa de diálogo

As etapas neste artigo pressupõem que você está criando um projeto do MFC (Microsoft Foundation Classes) baseado em caixa de diálogo (Classe CDialog), mas também você também pode adicionar suporte para um controle Windows Forms a uma caixa de diálogo MFC existente.

Para criar o controle de usuário do .NET

  1. Crie um projeto Visual C# da Biblioteca de Controle do Windows Forms chamado WindowsFormsControlLibrary1.

    No menu Arquivo, clique em Novo e, depois, em Projeto. Na pasta Visual C#, selecione Biblioteca de Controle do Windows Forms.

    Aceite o nome do projeto WindowsFormsControlLibrary1 clicando em OK.

    Por padrão, o nome do controle do .NET será UserControl1.

  2. Adicione os controles filho a UserControl1.

    Na Caixa de Ferramentas, abra a lista Todos os Windows Forms. Arraste um controle Botão para a superfície de design UserControl1.

    Adicione também um controle de Caixa de Texto.

  3. No Gerenciador de Soluções, clique duas vezes em UserControl1.Designer.cs para abri-lo para edição. Altere as declarações dos controles de Caixa de Texto e Botão de private para public.

  4. Compile o projeto.

    No menu Compilar, clique em Compilar Solução.

Para criar o aplicativo host do MFC

  1. Crie um projeto de aplicativo MFC.

    No menu Arquivo, clique em Novo e, depois, em Projeto. Na pasta Visual C++, selecione Aplicativo MFC.

    Na caixa Nome, digite MFC01. Altere a configuração de Solução para Adicionar à Solução. Clique em OK.

    No Assistente de Aplicativo MFC, para Tipo de Aplicativo, selecione Baseado em caixa de diálogo. Aceite as configurações padrão restantes e clique em Concluir. Isso cria um aplicativo MFC que tem uma caixa de diálogo do MFC.

  2. Adicione um controle de espaço reservado à caixa de diálogo do MFC.

    No menu Exibir, clique em Modo de Exibição de Recursos. No Modo de Exibição de Recursos, expanda a pasta Caixa de diálogo e clique duas vezes em IDD_MFC01_DIALOG. O recurso de caixa de diálogo é exibido no Editor de Recursos.

    Na Caixa de Ferramentas, abra a lista Editor de Caixa de Diálogo. Arraste um controle de Texto Estático para o recurso de caixa de diálogo. O controle de Texto Estático servirá como um espaço reservado para o controle do Windows Forms do .NET. Redimensione-o para que tenha aproximadamente o tamanho do controle do Windows Forms.

    Na janela Propriedades, altere a ID do controle de Texto Estático para IDC_CTRL1 e altere a propriedade TabStop para True.

  3. Configure o projeto para suporte a CLR (Common Language Runtime).

    No Gerenciador de Soluções, clique com o botão direito do mouse no nó do projeto MFC01 e clique em Propriedades.

    Na caixa de diálogo Páginas de Propriedades, em Propriedades de Configuração, selecione Geral. Na seção Padrões do Projeto, defina Suporte ao Common Language Runtime para Suporte ao Common Language Runtime (/clr).

    Em Propriedades de Configuração, expanda C/C++ e selecione o nó Geral. Defina Formato de Informações de Depuração para Programar Banco de Dados (/Zi).

    Selecione o nó Geração de Código. Defina Habilitar Recompilação Mínima como Não (/Gm-). Defina também Verificações Básicas de Runtime como Padrão.

    Clique em OK para aplicar as alterações.

  4. Adicione uma referência ao controle do .NET.

    No Gerenciador de Soluções, clique com o botão direito do mouse no nó do projeto MFC01 e clique em Adicionar, Referências. Na Página de Propriedades, clique em Adicionar Nova Referência, selecione WindowsFormsControlLibrary1 (na guia Projetos) e clique em OK. Esse procedimento adiciona uma referência na forma de uma opção do compilador /FU para que o programa seja compilado. Além disso, também coloca uma cópia de WindowsFormsControlLibrary1.dll na pasta de projeto \MFC01\ para que o programa seja executado.

  5. Em Stdafx.h, encontre esta linha:

    #endif // _AFX_NO_AFXCMN_SUPPORT
    

    Acima dela, adicione estas linhas:

    #include <afxwinforms.h>   // MFC Windows Forms support
    
  6. Adicione código para criar o controle gerenciado.

    Primeiro, declare o controle gerenciado. Em MFC01Dlg.h, vá para a declaração da classe de diálogo e adicione um membro de dados para o controle de usuário no escopo protegido, conforme mostrado a seguir.

    class CMFC01Dlg : public CDialog
    {
       // ...
       // Data member for the .NET User Control:
       CWinFormsControl<WindowsFormsControlLibrary1::UserControl1> m_ctrl1;
    

    Em seguida, forneça uma implementação para o controle gerenciado. Em MFC01Dlg.cpp, na substituição da caixa de diálogo de CMFC01Dlg::DoDataExchange que foi gerada pelo assistente de aplicativo MFC (não CAboutDlg::DoDataExchange, que está no mesmo arquivo), adicione o código a seguir para criar o controle gerenciado e associá-lo ao espaço reservado estático IDC_CTRL1.

    void CMFC01Dlg::DoDataExchange(CDataExchange* pDX)
    {
       CDialog::DoDataExchange(pDX);
       DDX_ManagedControl(pDX, IDC_CTRL1, m_ctrl1);
    }
    
  7. Compile e execute o projeto.

    No Gerenciador de Soluções, clique com o botão direito do mouse em MFC01 e clique em Definir como Projeto de Inicialização.

    No menu Compilar, clique em Compilar Solução.

    No menu Depurar, clique em Iniciar sem depurar. A caixa de diálogo do MFC deve exibir o controle do Windows Forms.

Confira também

Hospedando um controle de usuário do Windows Form em uma caixa de diálogo do MFC