Dela via


Gör så här: Skapa användarkontrollen och värd-MDI-vyn

Följande steg visar hur du skapar en .NET Framework-användarkontroll, skapar användarkontrollen i ett kontrollklassbibliotek (specifikt ett Windows-kontrollbiblioteksprojekt) och sedan kompilerar projektet till en sammansättning. Kontrollen kan sedan användas från ett MFC-program som använder klasser som härleds från CView-klassen och CWinFormsView-klassen.

Information om hur du skapar en Windows Forms-användarkontroll och skapar ett kontrollklassbibliotek finns i How to: Author User Controls (Så här skapar du användarkontroller).

Anmärkning

I vissa fall kanske Windows Forms-kontroller, till exempel en rutnätskontroll från tredje part, inte fungerar tillförlitligt när de finns i ett MFC-program. En rekommenderad lösning är att placera en Windows Forms-användarkontroll i MFC-programmet och placera rutnätskontrollen från tredje part i användarkontrollen.

Den här proceduren förutsätter att du har skapat ett Windows Forms Controls Library-projekt med namnet WindowsFormsControlLibrary1 enligt proceduren i How to: Create the User Control and Host in a Dialog Box (Skapa användarkontroll och värd i en dialogruta).

Att skapa MFC-värdprogrammet

  1. Skapa ett MFC-programprojekt.

    Arkiv-menyn väljer du Nytt och klickar sedan på Projekt. I mappen Visual C++ väljer du MFC-program.

    I rutan Namn anger du MFC02 och ändrar inställningen Lösning till Lägg till i Lösning. Klicka på OK.

    I MFC-programguiden godkänner du alla standardvärden och klickar sedan på Slutför. Detta skapar ett MFC-program med ett gränssnitt för flera dokument.

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

    Högerklicka på projektnoden i MFC01 och välj Egenskaper på snabbmenyn. Dialogrutan Egenskapssidor visas.

    Under Konfigurationsegenskaper väljer du Allmänt. I avsnittet Projektstandarder anger du Stöd för Common Language Runtime till Common Language Runtime Support (/clr).

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

    Klicka på noden Kodgenerering . Ställ in Aktivera minimal återskapa till Nej (/Gm-). Ange även Standardkörningskontroller till Standard.

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

  3. Lägg till följande rad i pch.h (stdafx.h i Visual Studio 2017 och tidigare):

    #using <System.Windows.Forms.dll>
    
  4. Lägg till en referens till .NET-kontrollen.

    Högerklicka på projektnoden i MFC02 och välj 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 kopierar också WindowsFormsControlLibrary1.dll till projektkatalogen MFC02 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. Ändra vyklassen så att den ärver från CWinFormsView.

    I MFC02View.h ersätter du CView med CWinFormsView så att koden visas på följande sätt:

    class CMFC02View : public CWinFormsView
    {
    };
    

    Om du vill lägga till ytterligare vyer i ditt MDI-program måste du anropa CWinApp::AddDocTemplate för varje vy du skapar.

  7. Ändra filen MFC02View.cpp för att ändra CView till CWinFormsView i IMPLEMENT_DYNCREATE makro- och meddelandekartan och ersätt den befintliga tomma konstruktorn med konstruktorn som visas nedan:

    IMPLEMENT_DYNCREATE(CMFC02View, CWinFormsView)
    
    CMFC02View::CMFC02View(): CWinFormsView(WindowsFormsControlLibrary1::UserControl1::typeid)
    {
    }
    BEGIN_MESSAGE_MAP(CMFC02View, CWinFormsView)
    //leave existing body as is
    END_MESSAGE_MAP()
    
  8. Skapa och kör projektet.

    Högerklicka på MFC02 i Solution Explorer och välj Ange som startprojekt.

    Klicka på Skapa lösningSkapa-menyn.

    felsökningsmenyn klickar du på Starta utan att felsöka.

Se även

Vara värd för en Windows Forms-användarkontroll som en MFC-vy