Condividi tramite


Procedura: creare il controllo utente e inserirlo in una finestra di dialogo

Aggiornamento: novembre 2007

La procedura di questo argomento presuppone la creazione di un nuovo progetto basato su finestra di dialogo (CDialog Class) MFC, ma è possibile anche aggiungere il supporto per un controllo Windows Form a una finestra di dialogo MFC esistente.

Per creare il controllo utente .NET

  1. Creare un nuovo progetto Libreria di controlli Windows di Visual C# denominato WindowsControlLibrary1.

    Scegliere Nuovo dal menu File e quindi Progetto. Nella cartella Visual C# selezionare l'icona Libreria di controlli Windows.

    Accettare il nome di progetto predefinito "WindowsControlLibrary1" scegliendo OK.

    Il nome predefinito del controllo .NET sarà UserControl1.

  2. Aggiungere controlli figlio a UserControl1.

    Nella Casella degli strumenti aprire l'elenco Tutti i Windows Form. Trascinare un controllo Button nell'area di progettazione di UserControl1.

    Aggiungere inoltre un controllo TextBox.

  3. Modificare le dichiarazioni dei controlli TextBox e Button da private a pubbliche nel file UserControl1.Designer.cs.

  4. Generare il progetto.

    Scegliere Genera soluzione dal menu Genera.

    Può rivelarsi utile annotare il percorso completo con il nome file della DLL generata nel log di generazione, poiché tali informazioni verranno immesse nell'applicazione MFC.

Per creare l'applicazione host MFC

  1. Creare un nuovo progetto Applicazione MFC.

    Scegliere Nuovo dal menu File e quindi Progetto. Nella cartella Visual C++ selezionare l'icona Applicazione MFC.

    Nella casella Nome immettere MFC01. Modificare l'impostazione relativa alla soluzione in Aggiungi a soluzione. Scegliere OK. Verrà visualizzata la Creazione guidata applicazione MFC.

    Nella Creazione guidata applicazione MFC selezionare Tipo di applicazione. Scegliere Finestra di dialogo. Accettare le restanti impostazioni predefinite e scegliere Fine. Verrà così creata un'applicazione MFC con una finestra di dialogo MFC.

  2. Aggiungere un controllo segnaposto alla finestra di dialogo MFC.

    Scegliere la scheda Visualizzazione risorse. In Visualizzazione risorse fare doppio clic su IDD_MFC01_DIALOG. La finestra di dialogo verrà visualizzata nell'editor risorse.

    Nella Casella degli strumenti aprire l'elenco Editor finestre. Trascinare un controllo di testo statico nella risorsa finestra di dialogo. Il controllo di testo statico fungerà da segnaposto per il controllo Windows Form .NET. Eseguirne il ridimensionamento in base alla dimensione del controllo Windows Form.

    Modificare l'ID del controllo di testo statico in IDC_CTRL1 nella finestra Proprietà e modificare la proprietà TabStop in True.

  3. Configurare il progetto.

    In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo del progetto MFC01 e quindi scegliere Proprietà dal menu di scelta rapida. Verrà visualizzata la finestra di dialogo Pagine delle proprietà.

    Nel controllo di struttura Proprietà di configurazione della finestra di dialogo Pagine delle proprietà selezionare Generale e quindi nella sezione Impostazioni predefinite progetto impostare Supporto Common Language Runtime su Supporto Common Language Runtime (/clr). Scegliere OK.

  4. Aggiungere un riferimento al controllo .NET.

    In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo del progetto MFC01 e quindi scegliere Riferimenti. In Pagina delle proprietà scegliere Aggiungi nuovo riferimento, selezionare WindowsControlLibrary1 nella scheda Progetti e quindi scegliere OK. Viene così aggiunto un riferimento sotto forma di opzione /FU del compilatore per la compilazione del programma e viene copiato il file WindowsControlLibrary1.dll nella directory del progetto MFC01 per l'esecuzione del programma.

  5. In stdafx.h individuare la seguente riga:

    #endif // _AFX_NO_AFXCMN_SUPPORT 
    

    Aggiungere le seguenti righe sopra di essa:

    #include <afxwinforms.h>   // MFC Windows Forms support
    
  6. Aggiungere il codice per la creazione del controllo gestito.

    Dichiarare innanzitutto il controllo gestito. In MFC01Dlg.h passare alla dichiarazione della classe di finestre di dialogo e aggiungere un membro dati per il controllo utente nell'ambito protetto, come segue:

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

    Fornire quindi un'implementazione per il controllo gestito. In MFC01Dlg.cpp, nell'override della finestra di dialogo di CMFC01Dlg::DoDataExchange generato dalla Creazione guidata applicazione MFC (non CAboutDlg::DoDataExchange, contenuto nello stesso file), aggiungere il codice riportato di seguito per creare il controllo gestito e associarlo al segnaposto statico IDC_CTRL1:

    void CMFC01Dlg::DoDataExchange(CDataExchange* pDX)
    {
       CDialog::DoDataExchange(pDX);
       DDX_ManagedControl(pDX, IDC_CTRL1, m_ctrl1);
    }
    
  7. Generare ed eseguire il progetto.

    In Esplora soluzioni fare clic con il pulsante destro del mouse su MFC01 e quindi scegliere Imposta come progetto di avvio.

    Scegliere Genera soluzione dal menu Genera.

    Scegliere Avvia senza eseguire debug dal menu Debug. Nella finestra di dialogo MFC verrà ora visualizzato il controllo Windows Form.

Vedere anche

Altre risorse

Hosting di un controllo utente Windows Form in una finestra di dialogo MFC