Udostępnij za pośrednictwem


Hosting kontrola użytkownika Windows formularza jako okno dialogowe MFC

MFC dostarcza klasę szablonu CWinFormsDialog pozwala obsługiwać formantu użytkownika Windows Forms (UserControl) w oknie dialogowym MFC modalny lub niemodalny.CWinFormsDialogjest pochodną klasy MFC CDialog, tak w oknie dialogowym można uruchomić jako modalny lub niemodalny.

Proces, CWinFormsDialog używa do obsługi sterowania użytkownika jest podobna do opisanej w Hosting sterowania Windows formularza użytkownika w oknie dialogowym MFC.Jednakże CWinFormsDialog zarządza inicjowania i hosting kontroli użytkownika, dzięki czemu nie ma być programowane ręcznie.

Przykładowej aplikacji, która pokazuje Windows Forms używane z MFC, zobacz MFC i integracji Windows Forms.

Aby utworzyć aplikację hosta MFC

  1. Utwórz nowy projekt aplikacji MFC.

    Na pliku menu wybierz Nowy, a następnie kliknij przycisk projektu.W Visual C++ folder wybierz Aplikacja MFC.

    W Nazwa wprowadź MFC03 i zmień ustawienie roztwór do Dodaj rozwiązanie.Click OK.

    W Kreatora aplikacji MFC, Zaakceptuj wszystkie ustawienia domyślne, a następnie kliknij przycisk Zakończ.Spowoduje to utworzenie aplikacji MFC z interfejsu wielu dokumentów.

  2. Konfigurowanie projektu.

    W Solution Explorer, kliknij prawym przyciskiem myszy MFC03 węzeł projekt i zaznacz Właściwości z menu kontekstowego.Stron właściwości pojawi się okno dialogowe.

    W Stron właściwości dialogowym Właściwości konfiguracji drzewa, zaznacz Ogólne, a następnie w Project domyślnie sekcji, ustaw obsługuje Common Language Runtime do wsparcia wspólnego języka Runtime (/ clr).Click OK.

  3. Dodaj odwołanie do formantu .net.

    W Solution Explorer, kliknij prawym przyciskiem myszy MFC03 węzeł projekt i zaznacz odniesienia.W Stronę właściwości, kliknij Dodać nowe odwołanie, zaznacz WindowsControlLibrary1 (pod projektów kartę) i kliknij przycisk OK.Odwołanie to dodaje w postaci /FU opcji kompilatora, aby skompilować, będzie program; kopiuje również WindowsControlLibrary1.dll do MFC03 projektu katalogu, tak aby program zostanie uruchomiony.

  4. Dodaj #include <afxwinforms.h> do stdafx.h na końcu istniejącej #include instrukcji.

  5. Dodaj nową klasę podklas tej CDialog.

    Kliknij prawym przyciskiem myszy nazwę projektu i Dodaj podklas tej klasy MFC (nazywane CHostForWinForm) CDialog.Ponieważ zasobów okno dialogowe nie jest konieczne, można usunąć identyfikator zasobów (zaznacz widok zasobów, rozwiń folder okno dialogowe i Usuń zasób IDD_HOSTFORWINFORM.Następnie usunąć wszelkie odniesienia do identyfikator kodu.).

  6. Zamień CDialog w plikach CHostForWinForm.h i CHostForWinForm.cpp z CWinFormsDialog<WindowsControlLibrary1::UserControl1>.

  7. Wywołanie DoModal klasy CHostForWinForm.

    W MFC03.cpp, #include "HostForWinForm.h".

    Przed instrukcji return w definicji CMFC03App::InitInstance dodać:

    CHostForWinForm m_HostForWinForm;

    m_HostForWinForm.DoModal();

  8. Tworzenie i uruchamianie projektu.

    Na budować menu, kliknij Roztwór budować.

    Na debugowania menu, kliknij uruchomić bez debugowania.

    Następnie dodać kod monitorować stan formantu na Windows Forms z aplikacji MFC.

  9. Dodaj program obsługi dla OnInitDialog.

    Wyświetl Właściwości okna (F4).W Widoku klasy, wybierz opcję CHostForWinForm.W Właściwości okna, zaznacz zastępuje i w wierszu OnInitDialog kliknij w lewej kolumnie i zaznacz < Dodaj >.Aby CHostForWinForm.h to dodaje następujący wiersz:

    virtual BOOL OnInitDialog();
    
  10. Definiowanie OnInitDialog (w CHostForWinForm.cpp), następująco:

    BOOL CHostForWinForm::OnInitDialog() {
       CWinFormsDialog<WindowsControlLibrary1::UserControl1>::OnInitDialog();
       GetControl()->button1->Click += MAKE_DELEGATE(System::EventHandler, OnButton1);
       return TRUE;
    }
    
  11. Następnie można dodać obsługi OnButton1.Dodaj następujące wiersze do sekcji publicznej klasy CHostForWinForm w 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()
    

    CHostForWinForm.cpp dodać tej definicji:

    void CHostForWinForm::OnButton1( System::Object^ sender, System::EventArgs^ e ) 
    {
       System::Windows::Forms::MessageBox::Show("test");
    }
    
  12. Tworzenie i uruchamianie projektu.Po kliknięciu przycisku, który znajduje się w formularzu Windows, będzie uruchamiać kodu w aplikacji MFC.

    Następnie dodać kod, aby wyświetlić kod MFC wartość w polu tekstowym w formularzu Windows.

  13. W sekcji publicznej klasy CHostForWinForm w CHostForWinForm.h należy dodać następującą deklarację:

    CString m_sEditBoxOnWinForm;
    
  14. W definicji DoDataExchange w CHostForWinForm.cpp należy dodać następujące trzy wiersze funkcji:

    if (pDX->m_bSaveAndValidate)
       m_sEditBoxOnWinForm = CString( GetControl()->textBox1->Text);
    else
       GetControl()->textBox1->Text = gcnew System::String(m_sEditBoxOnWinForm);
    
  15. W definicji OnButton1 w CHostForWinForm.cpp należy dodać następujące trzy wiersze funkcji:

    this->UpdateData(TRUE);
    System::String ^ z = gcnew System::String(m_sEditBoxOnWinForm);
    System::Windows::Forms::MessageBox::Show(z);
    
  16. Tworzenie i uruchamianie projektu.

Zobacz też

Informacje

System.Windows.Forms.UserControl

Inne zasoby

Przy użyciu formantu Windows formularza użytkownika w MFC