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
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.
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.
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.
Dodaj #include <afxwinforms.h> do stdafx.h na końcu istniejącej #include instrukcji.
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.).
Zamień CDialog w plikach CHostForWinForm.h i CHostForWinForm.cpp z CWinFormsDialog<WindowsControlLibrary1::UserControl1>.
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();
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.
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();
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; }
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"); }
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.
W sekcji publicznej klasy CHostForWinForm w CHostForWinForm.h należy dodać następującą deklarację:
CString m_sEditBoxOnWinForm;
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);
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);
Tworzenie i uruchamianie projektu.
Zobacz też
Informacje
System.Windows.Forms.UserControl