Spécification des pages de propriétés
Lorsque vous créez un contrôle ActiveX, vous souhaiterez souvent l’associer aux pages de propriétés qui peuvent être utilisées pour définir les propriétés de votre contrôle. Les conteneurs de contrôle utilisent l’interface ISpecifyPropertyPages
pour savoir quelles pages de propriétés peuvent être utilisées pour définir les propriétés de votre contrôle. Vous devez implémenter cette interface sur votre contrôle.
Pour implémenter ISpecifyPropertyPages
à l’aide d’ATL, procédez comme suit :
Dérivez votre classe de ISpecifyPropertyPagesImpl.
Ajoutez une entrée pour
ISpecifyPropertyPages
la carte COM de votre classe.Ajoutez une entrée PROP_PAGE au mappage de propriétés pour chaque page associée à votre contrôle.
Remarque
Lors de la génération d’un contrôle standard à l’aide de l’Assistant Contrôle ATL, vous devez uniquement ajouter les entrées PROP_PAGE au mappage de propriétés. L’Assistant génère le code nécessaire pour les autres étapes.
Les conteneurs bien comportementés affichent les pages de propriétés spécifiées dans le même ordre que les entrées PROP_PAGE dans le mappage de propriétés. En règle générale, vous devez placer les entrées de page de propriétés standard après les entrées de vos pages personnalisées dans le mappage de propriétés, afin que les utilisateurs voient d’abord les pages spécifiques à votre contrôle.
Exemple
La classe suivante pour un contrôle de calendrier utilise l’interface ISpecifyPropertyPages
pour indiquer aux conteneurs que ses propriétés peuvent être définies à l’aide d’une page de dates personnalisée et de la page de couleur de stock.
class ATL_NO_VTABLE CMyCtrl :
OtherInterfaces
public ISpecifyPropertyPagesImpl<CMyCtrl>
{
public:
BEGIN_COM_MAP(CMyCtrl)
OtherComMapEntries
COM_INTERFACE_ENTRY(ISpecifyPropertyPages)
END_COM_MAP()
BEGIN_PROP_MAP(CMyCtrl)
OtherPropMapEntries
PROP_PAGE(CLSID_DatePage)
PROP_PAGE(CLSID_StockColorPage)
END_PROP_MAP()
// Remainder of class declaration omitted.