Contenitori di controlli ActiveX: Utilizzo di controlli in un contenitore Non di Finestra Di Dialogo

In alcune applicazioni, ad esempio una SDI o un'applicazione MDI, sarà necessario includere un controllo in una finestra dell'applicazione.La funzione di creazione di un membro di classe wrapper, immessa da Visual C++, è possibile creare dinamicamente un'istanza del controllo, senza la necessità di una finestra di dialogo.

La funzione di creazione di un membro dispone dei seguenti parametri:

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

  • 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, in genere 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 di 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) nella sezione protetta 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 per classificare CMyView.

  4. Nella funzione di gestione, CMyView::OnCreate, effettua una chiamata alla funzione di Create di controllo utilizzando il puntatore di this 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 ogni volta che la visualizzazione dell'applicazione viene creata.

Vedere anche

Concetti

Contenitori di controlli ActiveX