Partager via


Ajout d'une propriété au contrôle (Didacticiel ATL, Partie 3)

IPolyCtl est l’interface qui contient les méthodes et propriétés personnalisées du contrôle, et vous y ajouterez une propriété.

Pour ajouter les définitions de propriétés à votre projet

  1. En mode Classe, développez la Polygon branche.

  2. Cliquez avec le bouton IPolyCtldroit .

  3. Dans le menu contextuel, cliquez sur Ajouter, puis sur Ajouter une propriété. L’Assistant Ajouter une propriété s’affiche.

  4. Tapez Sides le nom de la propriété.

  5. Dans la liste déroulante du type de propriété, sélectionnez short.

  6. Cliquez sur OK pour terminer l’ajout de la propriété.

  7. À partir de Explorateur de solutions, ouvrez Polygon.idl et remplacez les lignes suivantes à la fin de l’interface IPolyCtl : IDispatch :

    short get_Sides();
    void set_Sides(short value);
    

    par

    [propget, id(1), helpstring("property Sides")] HRESULT Sides([out, retval] short *pVal);
    [propput, id(1), helpstring("property Sides")] HRESULT Sides([in] short newVal);
    
  8. À partir de Explorateur de solutions, ouvrez PolyCtl.h et ajoutez les lignes suivantes après la définition de m_clrFillColor:

    short m_nSides;
    STDMETHOD(get_Sides)(short* pval);
    STDMETHOD(put_Sides)(short newval);
    

Bien que vous disposiez maintenant de fonctions squelettes pour définir et récupérer la propriété et une variable pour stocker la propriété, vous devez implémenter les fonctions en conséquence.

Pour mettre à jour les méthodes get et put

  1. Définissez la valeur par défaut de m_nSides. Faites de la forme par défaut un triangle en ajoutant une ligne au constructeur dans PolyCtl.h :

    m_nSides = 3;
    
  2. Implémentez les méthodes Get et Put. Les get_Sides déclarations et put_Sides les déclarations de fonction ont été ajoutées à PolyCtl.h. Ajoutez maintenant le code pour get_Sides et put_Sides à PolyCtl.cpp avec les éléments suivants :

    STDMETHODIMP CPolyCtl::get_Sides(short* pVal)
    {
       *pVal = m_nSides;
    
       return S_OK;
    }
    
    STDMETHODIMP CPolyCtl::put_Sides(short newVal)
    {
       if (2 < newVal && newVal < 101)
       {
          m_nSides = newVal;
          return S_OK;
       }
       else
       {
          return Error(_T("Shape must have between 3 and 100 sides"));
       }
    }
    

La get_Sides méthode retourne la valeur actuelle de la Sides propriété via le pVal pointeur. Dans la put_Sides méthode, le code garantit que l’utilisateur définit la Sides propriété sur une valeur acceptable. Le minimum doit être 3 et, étant donné qu’un tableau de points sera utilisé pour chaque côté, 100 est une limite raisonnable pour une valeur maximale.

Vous avez maintenant une propriété appelée Sides. À l’étape suivante, vous allez modifier le code de dessin pour l’utiliser.

Retour à l’étape 2 | à l’étape 4

Voir aussi

Didacticiel