Conteneurs de contrôles ActiveX : utilisation de contrôles dans un conteneur autre que de boîte de dialogue

Dans certaines applications, telles qu’une application SDI ou MDI, vous souhaiterez incorporer un contrôle dans une fenêtre de l’application. La fonction Créer un membre de la classe wrapper, insérée par Visual C++, peut créer une instance du contrôle de manière dynamique, sans avoir besoin d’une boîte de dialogue.

La fonction Créer un membre a les paramètres suivants :

lpszWindowName
Pointeur vers le texte à afficher dans la propriété Text ou Caption du contrôle (le cas échéant).

dwStyle
Styles Windows. Pour obtenir une liste complète, consultez CWnd ::CreateControl.

Rect
Spécifie la taille et la position du contrôle.

pParentWnd
Spécifie la fenêtre parente du contrôle, généralement un CDialog. Elle ne doit pas être NULL.

nID
Spécifie l’ID de contrôle et peut être utilisé par le conteneur pour faire référence au contrôle.

L’un des exemples d’utilisation de cette fonction pour créer dynamiquement un contrôle ActiveX serait dans une vue sous forme d’une application SDI. Vous pouvez ensuite créer une instance du contrôle dans le WM_CREATE gestionnaire de l’application.

Pour cet exemple, CMyView il s’agit de la classe d’affichage principale, CCirc de la classe wrapper et du CIRC. H est l’en-tête (. Fichier H) de la classe wrapper.

L’implémentation de cette fonctionnalité est un processus en quatre étapes.

Pour créer dynamiquement un contrôle ActiveX dans une fenêtre sans boîte de dialogue

  1. Insérez CIRC. H dans CMYVIEW. H, juste avant la définition de CMyView classe :

    #include "circ.h"
    
  2. Ajoutez une variable membre (de type CCirc) à la section protégée de la CMyView définition de classe située dans CMYVIEW. H:

    class CMyView : public CView
    {
    
    protected:
    CCirc m_myCtl;
    
    public:
    afx_msg void OnViewCircdlg();
    }
    ;
    
  3. Ajoutez un WM_CREATE gestionnaire de messages à la classe CMyView.

  4. Dans la fonction de gestionnaire, CMyView::OnCreateeffectuez un appel à la fonction du Create contrôle à l’aide du this pointeur comme fenêtre parente :

    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. Regénérez le projet. Un contrôle Circ est créé dynamiquement chaque fois que l’affichage de l’application est créé.

Voir aussi

Conteneurs de contrôles ActiveX