Condividi tramite


Contenitori di controlli ActiveX: utilizzo di controlli in un contenitore diverso da una finestra di dialogo

In alcune applicazioni, ad esempio un'applicazione SDI o un'applicazione MDI, sarà necessario importare un controllo in una finestra dell'applicazione. La funzione membro di Crea della classe wrapper, immessa da Visual C++, può creare in modo dinamico un'istanza del controllo, senza la necessità di una finestra di dialogo.

La funzione membro di Crea dispone dei seguenti parametri:

  • lpszWindowName
    Un puntatore al testo da visualizzare nella proprietà text o barra del titolo del controllo (se presenti).

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

  • rect
    Specifica la dimensione e la posizione del controllo.

  • pParentWnd
    Specifica la finestra padre del controllo, generalmente CDialog. Non deve essere NULL.

  • nID
    Specifica l'id del controllo e può essere utilizzato da contenitore per fare riferimento al controllo.

Un esempio di utilizzo di questa funzione per creare dinamicamente un controllo ActiveX formano una visualizzazione form di un'applicazione SDI. È quindi possibile creare un'istanza del controllo nel gestore di WM_CREATE dell'applicazione.

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

Implementare questa funzionalità è un processo a quattro passaggio.

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

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

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

  4. Nella funzione di gestione, CMyView::OnCreate, effettua una chiamata alla funzione di Create di controllo utilizzando il puntatore di questo ad esempio la 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. Ricompilare il progetto. Un controllo di Circ verrà creato dinamicamente quando la visualizzazione dell'applicazione viene creata.

Vedere anche

Concetti

Contenitori di controlli ActiveX