Porady: tworzenie kontrolki użytkownika i hosta w oknie dialogowym
W krokach opisanych w tym artykule przyjęto założenie, że tworzysz projekt Klasy programu Microsoft Foundation Classes (MFC) oparty na oknach dialogowych (klasa CDialog), ale możesz również dodać obsługę kontrolki Windows Forms do istniejącego okna dialogowego MFC.
Aby utworzyć kontrolkę użytkownika platformy .NET
Utwórz projekt biblioteki kontrolek formularzy systemu Windows w języku Visual C# o nazwie
WindowsFormsControlLibrary1
.W menu Plik kliknij pozycję Nowy, a następnie kliknij pozycję Projekt. W folderze Visual C# wybierz pozycję Biblioteka kontrolek formularzy systemu Windows.
WindowsFormsControlLibrary1
Zaakceptuj nazwę projektu, klikając przycisk OK.Domyślnie nazwą kontrolki .NET będzie
UserControl1
.Dodaj kontrolki podrzędne do
UserControl1
elementu .W przyborniku otwórz listę Wszystkie formularze systemu Windows. Przeciągnij kontrolkę Przycisk na powierzchnię projektową
UserControl1
.Dodaj również kontrolkę TextBox .
W Eksplorator rozwiązań kliknij dwukrotnie UserControl1.Designer.cs, aby otworzyć go do edycji. Zmień deklaracje kontrolki TextBox i Przycisku z
private
napublic
.Skompiluj projekt.
W menu Kompilacja kliknij pozycję Kompiluj rozwiązanie.
Aby utworzyć aplikację hosta MFC
Utwórz projekt aplikacji MFC.
W menu Plik kliknij pozycję Nowy, a następnie kliknij pozycję Projekt. W folderze Visual C++ wybierz pozycję Aplikacja MFC.
W polu Nazwa wpisz
MFC01
. Zmień ustawienie Rozwiązanie na Dodaj do rozwiązania. Kliknij przycisk OK.W Kreatorze aplikacji MFC w polu Typ aplikacji wybierz pozycję Oparte na oknach dialogowych. Zaakceptuj pozostałe ustawienia domyślne i kliknij przycisk Zakończ. Spowoduje to utworzenie aplikacji MFC, która ma okno dialogowe MFC.
Dodaj kontrolkę symbolu zastępczego do okna dialogowego MFC.
W menu Widok kliknij pozycję Widok zasobów. W widoku zasobu rozwiń folder Dialog i kliknij dwukrotnie pozycję
IDD_MFC01_DIALOG
. Zasób okna dialogowego zostanie wyświetlony w Edytorze zasobów.W przyborniku otwórz listę Edytor okien dialogowych. Przeciągnij kontrolkę Tekst statyczny do zasobu okna dialogowego. Kontrolka Tekst statyczny będzie pełnić rolę symbolu zastępczego kontrolki .NET Windows Forms. Zmień jego rozmiar na rozmiar kontrolki Windows Forms.
W oknie Właściwości zmień identyfikator kontrolki
IDC_CTRL1
Tekst statyczny na i zmień właściwość TabStop na True.Skonfiguruj projekt pod kątem obsługi środowiska uruchomieniowego języka wspólnego (CLR).
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy węzeł projektu MFC01, a następnie kliknij polecenie Właściwości.
W oknie dialogowym Strony właściwości w obszarze Właściwości konfiguracji wybierz pozycję Ogólne. W sekcji Project Defaults (Ustawienia domyślne projektu) ustaw opcję Obsługa środowiska uruchomieniowego języka wspólnego na wartość Obsługa środowiska uruchomieniowego języka wspólnego (/clr)..
W obszarze Właściwości konfiguracji rozwiń węzeł C/C++ i wybierz węzeł Ogólne . Ustaw wartość Format informacji debugowania na Wartość Baza danych programu (/Zi)..
Wybierz węzeł Generowanie kodu. Ustaw opcję Włącz minimalną ponowną kompilację na wartość Nie (/Gm-). Ustaw również opcję Podstawowe kontrole środowiska uruchomieniowego na wartość Domyślna.
Kliknij przycisk OK , aby zastosować zmiany.
Dodaj odwołanie do kontrolki .NET.
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy węzeł projektu MFC01, a następnie kliknij polecenie Dodaj, odwołania. Na stronie właściwości kliknij pozycję Dodaj nowe odwołanie, wybierz pozycję WindowsFormsControlLibrary1 (na karcie Projekty), a następnie kliknij przycisk OK. Spowoduje to dodanie odwołania w postaci /FU opcji kompilatora, aby program został skompilowany. Umieszcza również kopię WindowsFormsControlLibrary1.dll w folderze projektu \MFC01\, aby program został uruchomiony.
W pliku Stdafx.h znajdź następujący wiersz:
#endif // _AFX_NO_AFXCMN_SUPPORT
Nad nim dodaj następujące wiersze:
#include <afxwinforms.h> // MFC Windows Forms support
Dodaj kod, aby utworzyć zarządzaną kontrolkę.
Najpierw zadeklaruj zarządzaną kontrolkę. W pliku MFC01Dlg.h przejdź do deklaracji klasy okna dialogowego i dodaj składową danych dla kontrolki użytkownika w zakresie chronionym w następujący sposób.
class CMFC01Dlg : public CDialog { // ... // Data member for the .NET User Control: CWinFormsControl<WindowsFormsControlLibrary1::UserControl1> m_ctrl1;
Następnie podaj implementację dla zarządzanej kontrolki. W MFC01Dlg.cpp, w oknie dialogowym zastąpienia
CMFC01Dlg::DoDataExchange
, które zostało wygenerowane przez kreatora aplikacji MFC (a nieCAboutDlg::DoDataExchange
, który znajduje się w tym samym pliku), dodaj następujący kod, aby utworzyć zarządzaną kontrolkę i skojarzyć ją ze statycznym uchwytem zastępczym IDC_CTRL1.void CMFC01Dlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_ManagedControl(pDX, IDC_CTRL1, m_ctrl1); }
Skompiluj i uruchom projekt.
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy MFC01, a następnie kliknij polecenie Ustaw jako projekt startowy.
W menu Kompilacja kliknij pozycję Kompiluj rozwiązanie.
W menu Debugowanie kliknij przycisk Start bez debugowania. W oknie dialogowym MFC powinna być wyświetlana kontrolka Formularze systemu Windows.
Zobacz też
Hostowanie kontrolki użytkownika formularza systemu Windows w oknie dialogowym MFC