Anvisningar: Skapa användarkontroll och värd i en dialogruta

Stegen i den här artikeln förutsätter att du skapar ett dialogbaserat (CDialog Class) Microsoft Foundation-klassprojekt (MFC), men du kan också lägga till stöd för en Windows Forms-kontroll i en befintlig MFC-dialogruta.

Så här skapar du .NET-användarkontrollen

  1. Skapa ett Visual C# Windows Forms Control Library-projekt med namnet WindowsFormsControlLibrary1.

    Klicka på NyttArkiv-menyn och klicka sedan på Projekt. I mappen Visual C# väljer du Kontrollbibliotek för Windows-formulär.

    WindowsFormsControlLibrary1 Acceptera projektnamnet genom att klicka på OK.

    Som standard är UserControl1namnet på .NET-kontrollen .

  2. Lägg till underordnade kontroller i UserControl1.

    Öppna listan Alla Windows-formulär i verktygslådan. Dra en knappkontroll till UserControl1 designytan.

    Lägg också till en TextBox-kontroll .

  3. Dubbelklicka på UserControl1.Designer.cs i Solution Explorer för att öppna den för redigering. Ändra textrutans och knappens deklarationer från private till public.

  4. Skapa projektet.

    Klicka på Skapa lösningSkapa-menyn.

Att skapa MFC-värdprogrammet

  1. Skapa ett MFC-programprojekt.

    Klicka på NyttArkiv-menyn och klicka sedan på Projekt. I mappen Visual C++ väljer du MFC-program.

    I rutan Namn skriver du MFC01. Ändra lösningsinställningen till Lägg till i lösning. Klicka på OK.

    I guiden MFC-program väljer du Dialogbaserad för Programtyp. Acceptera de återstående standardinställningarna och klicka på Slutför. Detta skapar ett MFC-program som har en MFC-dialogruta.

  2. Lägg till en platshållarkontroll i dialogrutan MFC.

    På menyn Visa klickar du på Resursvy. I Resursvyn expanderar du mappen Dialog och dubbelklickar på IDD_MFC01_DIALOG. Dialogresursen visas i Resursredigeraren.

    Öppna listan Dialogredigerare i verktygslådan. Dra en statisk textkontroll till dialogresursen. Kontrollen Statisk text fungerar som platshållare för .NET Windows Forms-kontrollen. Ändra storlek på den till ungefär storleken på Windows Forms-kontrollen.

    I fönstret Egenskaper ändrar du ID för kontrollen Statisk text till IDC_CTRL1 och ändrar egenskapen TabStop till Sant.

  3. Konfigurera projektet för STÖD för Common Language Runtime (CLR).

    Högerklicka på MFC01-projektnoden i Solution Explorer och klicka sedan på Egenskaper.

    I dialogrutan Egenskapssidor går du till Konfigurationsegenskaper och väljer Allmänt. I avsnittet Project Defaults anger du Stöd för Common Language Runtime till Common Language Runtime Support (/clr).

    Under Konfigurationsegenskaper expanderar du C/C++ och väljer noden Allmänt . Ange Felsökningsinformationsformat tillProgramdatabas (/Zi).

    Välj noden Kodgenerering . Ange Aktivera minimal omkompilering till Nej (/Gm-). Ställ även in Standardkörningskontroller till Standard.

    Klicka på OK för att tillämpa ändringarna.

  4. Lägg till en referens till .NET-kontrollen.

    Högerklicka på MFC01-projektnoden i Solution Explorer och klicka sedan på Lägg tillreferenser. På egenskapssidan klickar du på Lägg till ny referens, väljer WindowsFormsControlLibrary1 (under fliken Projekt ) och klickar på OK. Detta lägger till en referens i form av ett /FU-kompilatoralternativ så att programmet kompileras. Den placerar också en kopia av WindowsFormsControlLibrary1.dll i projektmappen \MFC01\ så att programmet körs.

  5. I Stdafx.h hittar du den här raden:

    #endif // _AFX_NO_AFXCMN_SUPPORT
    

    Lägg till följande rader ovanför den:

    #include <afxwinforms.h>   // MFC Windows Forms support
    
  6. Lägg till kod för att skapa den hanterade kontrollen.

    Deklarera först den hanterade kontrollen. I MFC01Dlg.h går du till deklarationen för dialogklassen och lägger till en datamedlem för användarkontrollen i Skyddat omfång enligt följande.

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

    Ange sedan en implementering för den hanterade kontrollen. I MFC01Dlg.cpp lägger du till följande kod i dialogrutans åsidosättning av CMFC01Dlg::DoDataExchange som genererades av MFC-programguiden (inte CAboutDlg::DoDataExchange, som finns i samma fil) för att skapa den hanterade kontrollen och associera den med den statiska platshållaren IDC_CTRL1.

    void CMFC01Dlg::DoDataExchange(CDataExchange* pDX)
    {
       CDialog::DoDataExchange(pDX);
       DDX_ManagedControl(pDX, IDC_CTRL1, m_ctrl1);
    }
    
  7. Skapa och kör projektet.

    Högerklicka på MFC01 i Solution Explorer och klicka sedan på Ange som startprojekt.

    Klicka på Skapa lösningSkapa-menyn.

    felsökningsmenyn klickar du på Starta utan att felsöka. MFC-dialogrutan bör visa Windows Forms-kontrollen.

Se även

Bädda in en Windows Forms-kontroll i en MFC-dialogruta