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
En mode Classe, développez la
Polygon
branche.Cliquez avec le bouton
IPolyCtl
droit .Dans le menu contextuel, cliquez sur Ajouter, puis sur Ajouter une propriété. L’Assistant Ajouter une propriété s’affiche.
Tapez
Sides
le nom de la propriété.Dans la liste déroulante du type de propriété, sélectionnez
short
.Cliquez sur OK pour terminer l’ajout de la propriété.
À 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);
À 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
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;
Implémentez les méthodes
Get
etPut
. Lesget_Sides
déclarations etput_Sides
les déclarations de fonction ont été ajoutées à PolyCtl.h. Ajoutez maintenant le code pourget_Sides
etput_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