Compartilhar via


Hospedagem de um controle de usuário do Windows formulário sistema autônomo uma caixa de diálogo do MFC

MFC fornece a classe de modelo CWinFormsDialog para permitir que você host um controle de usuário do Windows Forms (UserControl) em uma caixa de diálogo modal ou sem janela restrita do MFC. CWinFormsDialog derivada da classe MFC CDialog, portanto, a caixa de diálogo pode ser iniciada sistema autônomo janela restrita ou sem janela restrita.

O processo que CWinFormsDialog usos para hospedar o controle de usuário é semelhante ao descrito em Hospedagem de um controle de usuário do Windows formulário em uma caixa de diálogo do MFC. No entanto, CWinFormsDialog gerencia a inicialização e de hospedagem do controle de usuário, de modo que ele não tenha ser programado manualmente.

Para um aplicativo de exemplo que mostra usado com o MFC do Windows Forms, consulte Integração do WinForms e MFC.

Para criar o aplicativo host do MFC

  1. criar um novo projeto MFC aplicativo.

    Sobre o Arquivo menu, selecionar Newe, em seguida, clicar Projeto.No O Visual C++ pasta, selecionar Aplicativo MFC.

    No Nome , digite MFC03 e altere a configuração de solução para Adicionar à solução.clicar OK.

    No MFC aplicativo assistente, aceitar todos os padrões e, em seguida, clicar Concluir.Isso cria um aplicativo MFC com uma interface de documentos múltiplos.

  2. configurar o projeto.

    In O gerenciador de soluções, clicar com o botão direito do mouse o MFC03 nó do projeto e selecionar Propriedades no menu de contexto.The Páginas de propriedades caixa de diálogo é exibida.

    No Páginas de propriedades caixa de diálogo, no Propriedades de configuração controle de árvore, selecionar Geral, em seguida, no Padrões de projeto seção, conjunto Suporte a Common linguagem tempo de execução to Suporte a Common linguagem tempo de execução (/ clr).Clique em OK.

  3. Adicione uma referência ao controle .NET.

    In O gerenciador de soluções, clicar com o botão direito do mouse o MFC03 nó do projeto e selecionar Referências.No página de propriedades, clicar Adicionar nova referência, selecionar WindowsControlLibrary1 (sob o Projetos guia) e clicar OK.Isso adiciona uma referência na forma de um /FU compilador opção para que o programa será compilado; também copia WindowsControlLibrary1.dll no MFC03 diretório de projeto para que o programa seja executado.

  4. Add #include <afxwinforms.h> para stdafx.h, no participante de existente #include instruções.

  5. Adicione uma nova classe que as subclasses CDialog.

    clicar com o botão direito do mouse em nome do projeto e adicionar uma classe do MFC (chamado CHostForWinForm) que as subclasses CDialog. Como você não precisa do recurso de caixa de diálogo, você pode excluir a ID do recurso (selecionar o modo de exibição de recurso, expandir a pasta caixa de diálogo e excluir IDD_HOSTFORWINFORM recurso.Em seguida, remova quaisquer referências à ID no código.).

  6. Substituir CDialog em arquivos CHostForWinForm.h e CHostForWinForm.cpp com CWinFormsDialog<WindowsControlLibrary1::UserControl1>.

  7. Chame DoModal na classe CHostForWinForm.

    No MFC03.cpp, adicione #include "HostForWinForm.h".

    Antes da demonstrativo return na definição de CMFC03App::InitInstance, adicione:

    CHostForWinForm m_HostForWinForm;

    m_HostForWinForm.DoModal();

  8. Criar e executar o projeto.

    On the Compilação menu, clicar Criar solução.

    Sobre o Depurar menu, clicar Iniciar sem depuração.

    Em seguida, você adicionará código para monitorar o estado de um controle no Windows Forms do aplicativo MFC.

  9. Adicione um manipulador para OnInitDialog.

    Exibir o Propriedades janela (F4).In Modo de exibição de classe, selecionar CHostForWinForm.No Propriedades janela, selecionar substituições e na linha para OnInitDialog, clicar na coluna esquerda e selecionar < Adicionar >.Isso adiciona a seguinte linha ao CHostForWinForm.h:

    virtual BOOL OnInitDialog();
    
  10. Defina OnInitDialog (em CHostForWinForm.cpp) da seguinte maneira:

    BOOL CHostForWinForm::OnInitDialog() {
       CWinFormsDialog<WindowsControlLibrary1::UserControl1>::OnInitDialog();
       GetControl()->button1->Click += MAKE_DELEGATE(System::EventHandler, OnButton1);
       return TRUE;
    }
    
  11. Em seguida adicione o manipulador OnButton1.Adicione as seguintes linhas à seção pública da classe CHostForWinForm no CHostForWinForm.h:

    virtual void OnButton1( System::Object^ sender, System::EventArgs^ e );
    
    BEGIN_DELEGATE_MAP( CHostForWinForm )
       EVENT_DELEGATE_ENTRY( OnButton1, System::Object^, System::EventArgs^ );
    END_DELEGATE_MAP()
    

    No CHostForWinForm.cpp, adicione essa definição:

    void CHostForWinForm::OnButton1( System::Object^ sender, System::EventArgs^ e ) 
    {
       System::Windows::Forms::MessageBox::Show("test");
    }
    
  12. Criar e executar o projeto.Quando você clica no botão, que está no formulário do Windows, o código no aplicativo MFC será executado.

    Em seguida, você adicionará código para exibir o valor do código MFC na caixa de texto no Windows formulário.

  13. Na seção pública da classe CHostForWinForm no CHostForWinForm.h, adicione a declaração a seguir:

    CString m_sEditBoxOnWinForm;
    
  14. Na definição de DoDataExchange em CHostForWinForm.cpp, adicione as seguintes três linhas ao participante da função:

    if (pDX->m_bSaveAndValidate)
       m_sEditBoxOnWinForm = CString( GetControl()->textBox1->Text);
    else
       GetControl()->textBox1->Text = gcnew System::String(m_sEditBoxOnWinForm);
    
  15. Na definição de OnButton1 em CHostForWinForm.cpp, adicione as seguintes três linhas ao participante da função:

    this->UpdateData(TRUE);
    System::String ^ z = gcnew System::String(m_sEditBoxOnWinForm);
    System::Windows::Forms::MessageBox::Show(z);
    
  16. Criar e executar o projeto.

Consulte também

Referência

System.Windows.Forms.UserControl

Outros recursos

Usando um controle de usuário do Windows formulário no MFC