Procedura: creare il controllo utente e inserirlo nella visualizzazione MDI
I passaggi seguenti illustrano come creare un controllo utente .NET Framework, creare il controllo utente in una libreria di classi di controllo (in particolare, un progetto libreria di controlli di Windows) e quindi compilare il progetto in un assembly. Il controllo può quindi essere utilizzato da un'applicazione MFC che usa classi derivate dalla classe CView e dalla classe CWinFormsView.
Per informazioni su come creare un controllo utente Windows Form e creare una libreria di classi di controllo, vedere Procedura: Creare controlli utente.
Nota
In alcuni casi, i controlli Windows Form, ad esempio un controllo Grid di terze parti, potrebbero non comportarsi in modo affidabile quando sono ospitati in un'applicazione MFC. Una soluzione alternativa consigliata consiste nell'inserire un controllo utente Windows Form nell'applicazione MFC e posizionare il controllo Griglia di terze parti all'interno del controllo Utente.
Questa procedura presuppone che sia stato creato un progetto della libreria di controlli Windows Form denominato WindowsFormsControlLibrary1, in base alla procedura descritta in Procedura: Creare il controllo utente e l'host in una finestra di dialogo.
Per creare l'applicazione host MFC
Creare un progetto di applicazione MFC.
Scegliere Nuovo dal menu File e quindi fare clic su Progetto. Nella cartella Visual C++ selezionare Applicazione MFC.
Nella casella Nome immettere
MFC02
e modificare l'impostazione Soluzione in Aggiungi alla soluzione. Fare clic su OK.Nella Creazione guidata applicazione MFC accettare tutte le impostazioni predefinite e quindi fare clic su Fine. Verrà creata un'applicazione MFC con un'interfaccia a documenti multipli.
Configurare il progetto per il supporto CLR (Common Language Runtime).
In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo del
MFC01
progetto e scegliere Proprietà dal menu di scelta rapida. Verrà visualizzata la finestra di dialogo Pagine delle proprietà.In Proprietà di configurazione, selezionare Generale. Nella sezione Project Defaults (Impostazioni predefinite progetto) impostare Common Language Runtime support (/clr) su Common Language Runtime Support (/clr).
In Proprietà di configurazione espandere C/C++ e fare clic sul nodo Generale . Impostare Formato informazioni di debug su Database programma (/Zi).Set Debug Information Format to Program Database (/Zi).
Fare clic sul nodo Generazione codice. Impostare Abilita ricompilazione minima su No (/Gm-). Impostare anche Controlli di runtime di base su Impostazione predefinita.
Fare clic su OK per applicare le modifiche.
In pch.h (stdafx.h in Visual Studio 2017 e versioni precedenti), aggiungere la riga seguente:
#using <System.Windows.Forms.dll>
Aggiungere un riferimento al controllo .NET.
In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo del
MFC02
progetto e scegliere Aggiungi, Riferimenti. Nella pagina delle proprietà fare clic su Aggiungi nuovo riferimento, selezionare WindowsFormsControlLibrary1 (nella scheda Progetti) e fare clic su OK. In questo modo viene aggiunto un riferimento sotto forma di opzione del compilatore /FU in modo che il programma venga compilato, ma copia anche WindowsFormsControlLibrary1.dll nella directory delMFC02
progetto in modo che il programma venga eseguito.In stdafx.h trovare questa riga:
#endif // _AFX_NO_AFXCMN_SUPPORT
Aggiungere queste righe sopra:
#include <afxwinforms.h> // MFC Windows Forms support
Modificare la classe di visualizzazione in modo che erediti da CWinFormsView.
In MFC02View.h sostituire CView con CWinFormsView in modo che il codice venga visualizzato come segue:
class CMFC02View : public CWinFormsView { };
Se si desidera aggiungere altre visualizzazioni all'applicazione MDI, sarà necessario chiamare CWinApp::AddDocTemplate per ogni visualizzazione creata.
Modificare il file MFC02View.cpp per modificare CView in CWinFormsView nella macro IMPLEMENT_DYNCREATE e nella mappa messaggi e sostituire il costruttore vuoto esistente con il costruttore illustrato di seguito:
IMPLEMENT_DYNCREATE(CMFC02View, CWinFormsView) CMFC02View::CMFC02View(): CWinFormsView(WindowsFormsControlLibrary1::UserControl1::typeid) { } BEGIN_MESSAGE_MAP(CMFC02View, CWinFormsView) //leave existing body as is END_MESSAGE_MAP()
Compilare ed eseguire il progetto.
In Esplora soluzioni fare clic con il pulsante destro del mouse su MFC02 e scegliere Imposta come progetto di avvio.
Nel menu Compila scegliere Compila soluzione.
Scegliere Avvia senza eseguire il debug dal menu Debug.
Vedi anche
Hosting di un controllo utente Windows Form come visualizzazione MFC