Condividi tramite


Contenitori di controlli ActiveX: uso di controlli in un contenitore non di dialogo

Annotazioni

La libreria Microsoft Foundation Classes (MFC) continua a essere supportata. Tuttavia, non aggiungiamo più funzionalità né aggiorniamo la documentazione.

In alcune applicazioni, ad esempio un'applicazione SDI o MDI, è necessario incorporare un controllo in una finestra dell'applicazione. La funzione Create member della classe wrapper, inserita da Visual Studio, può creare un'istanza del controllo in modo dinamico, senza la necessità di una finestra di dialogo.

La funzione Create member ha i parametri seguenti:

lpszWindowName
Puntatore al testo da visualizzare nella proprietà Text o Caption del controllo (se presente).

dwStyle
Stili di Windows. Per un elenco completo, vedere CWnd::CreateControl.

rettangolo
Specifica le dimensioni e la posizione del controllo.

pParentWnd
Specifica la finestra padre del controllo, in genere un oggetto CDialog. Non deve essere NULL.

nID
Specifica l'ID del controllo e può essere usato dal contenitore per fare riferimento al controllo.

Un esempio di utilizzo di questa funzione per creare dinamicamente un controllo ActiveX sarebbe in una vista modulo di un'applicazione SDI. È quindi possibile creare un'istanza del controllo nel WM_CREATE gestore dell'applicazione.

Per questo esempio, CMyView è la classe di visualizzazione principale, CCirc è la classe wrapper e CIRC. H è l'intestazione (. H) file della classe wrapper.

L'implementazione di questa funzionalità è un processo in quattro passaggi.

Per creare dinamicamente un controllo ActiveX in una finestra non di dialogo

  1. Inserire CIRC. H in CMYVIEW. H, subito prima della definizione della CMyView classe:

    #include "circ.h"
    
  2. Aggiungere una variabile membro (di tipo CCirc) alla sezione protetta della definizione della CMyView classe che si trova in CMYVIEW. H:

    class CMyView : public CView
    {
    
    protected:
    CCirc m_myCtl;
    
    public:
    afx_msg void OnViewCircdlg();
    };
    
  3. Aggiungere un WM_CREATE gestore di messaggi alla classe CMyView.

  4. Nella funzione CMyView::OnCreatedel gestore eseguire una chiamata alla funzione del Create controllo usando il this puntatore come finestra padre:

    int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
       if (CView::OnCreate(lpCreateStruct) == -1)
          return -1;
    
       m_myCtl.Create(NULL, WS_VISIBLE, CRect(50, 50, 100, 100), this, 0);
       m_myCtl.SetCaption(_T("Control created"));
    
       return 0;
    }
    
  5. Ricostruire il progetto. Ogni volta che viene creata la visualizzazione dell'applicazione, verrà creato un controllo Circ in modo dinamico.

Vedere anche

Contenitori di controlli ActiveX