Partager via


Classe CBasePropertyPage

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

Hiérarchie de classes cbasepropertypage

La CBasePropertyPage classe est une classe abstraite permettant d’implémenter une page de propriétés. Utilisez cette classe si vous écrivez un filtre (ou un autre objet) qui prend en charge les pages de propriétés.

Variables de membre protégé Description
m_bDirty Indique si l’une des propriétés a changé.
m_DialogId Identificateur de ressource pour la boîte de dialogue.
m_Dlg Handle vers la fenêtre de boîte de dialogue.
m_hwnd Handle vers la fenêtre de boîte de dialogue.
m_pPageSite Pointeur vers l’interface IPropertyPageSite du site de page de propriétés.
m_TitleId Identificateur de ressource pour une chaîne qui contient le titre de la boîte de dialogue.
Méthodes publiques Description
CBasePropertyPage Méthode du constructeur.
~CBasePropertyPage Méthode de destructeur. Virtuel.
OnActivate Appelé lorsque la page de propriétés est activée. Virtuel.
OnApplyChanges Appelé lorsque l’utilisateur applique des modifications à la page de propriétés. Virtuel.
OnConnect Fournit un pointeur IUnknown vers l’objet associé à la page de propriétés. Virtuel.
OnDeactivate Appelé lorsque la fenêtre de boîte de dialogue est détruite. Virtuel.
OnDisconnect Appelée lorsque la page de propriétés doit libérer l’objet associé. Virtuel.
OnReceiveMessage Appelé lorsque la boîte de dialogue reçoit un message. Virtuel.
IPropertyPage, méthodes Description
Activer Crée la fenêtre de boîte de dialogue.
Appliquer Applique les valeurs de la page de propriétés actuelles à l’objet associé à la page de propriétés
Désactivation Détruit la fenêtre de boîte de dialogue.
GetPageInfo Récupère des informations sur la page de propriétés.
Aide Appelle l’aide de la page de propriétés.
IsPageDirty Indique si la page de propriétés a changé depuis son activation ou depuis l’appel le plus récent à IPropertyPage::Apply.
Déplacer Positionne et redimensionne la boîte de dialogue.
SetObjects Fournit des pointeurs IUnknown pour les objets associés à la page de propriétés.
SetPageSite Initialise la page de propriétés.
Afficher Affiche ou masque la boîte de dialogue.
TranslateAccelerator Indique à la page de propriétés de traiter une séquence de touches.

Notes

Une page de propriétés étant un objet COM, vous devez générer un GUID pour l’identificateur de classe (CLSID) et fournir une entrée dans le tableau CFactoryTemplate . Pour plus d’informations, consultez DirectShow et COM. L’exemple suivant montre une entrée de fabrique de classe classique :

CFactoryTemplate g_Templates[] =
{   
    { 
        L"My Property Page",
        &CLSID_MyPropPage,
        CMyProp::CreateInstance,
        NULL,
        NULL
    },
    /* Also include the template for your filter (not shown). */
};

Votre filtre doit exposer l’interface ISpecifyPropertyPages . Cette interface contient une méthode unique, GetPages, qui retourne le CLSID de la page de propriétés. L’exemple suivant montre comment implémenter cette méthode :

STDMETHODIMP CMyFilter::GetPages(CAUUID *pPages)
{
    if (!pPages) return E_POINTER;

    pPages->cElems = 1;
    pPages->pElems = reinterpret_cast<GUID*>(CoTaskMemAlloc(sizeof(GUID)));
    if (pPages->pElems == NULL) 
    {
        return E_OUTOFMEMORY;
    }
    *(pPages->pElems) = CLSID_MyPropPage;
    return S_OK;
} 

N’oubliez pas de remplacer également la méthode NonDelegatingQueryInterface du filtre. Pour plus d’informations, consultez DirectShow et COM et INonDelegatingUnknown.

Ensuite, créez le dialogue en tant que ressource dans votre projet, puis créez une ressource de chaîne qui contient le titre du dialogue. Ces DEUX ID de ressource sont des paramètres du constructeur CBasePropertyPage . Le fait de conserver la chaîne de titre dans une ressource facilite la localisation de votre page de propriétés.

La classe CBasePropertyPage fournit une infrastructure pour l’interface IPropertyPage . Cette infrastructure appelle un certain nombre de méthodes virtuelles, notamment CBasePropertyPage::OnActivate, CBasePropertyPage::OnApplyChanges, etc. Dans la classe de base, ces méthodes retournent simplement S_OK. Votre classe dérivée doit remplacer tout ou partie de ces méthodes virtuelles. Pour plus d’informations, consultez les remarques relatives aux méthodes individuelles.

Pour obtenir un exemple étendu de l’utilisation de cette classe pour créer une page de propriétés, consultez Création d’une page de propriétés de filtre.

Configuration requise

Condition requise Valeur
En-tête
Cprop.h (include Streams.h)
Bibliothèque
Strmbase.lib (builds de vente au détail) ;
Strmbasd.lib (builds de débogage)