Partager via


Étape 4. Créer la page de propriétés

[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.]

À ce stade, le filtre prend en charge tout ce dont il a besoin pour une page de propriétés. L’étape suivante consiste à implémenter la page de propriétés elle-même. Commencez par dériver une nouvelle classe à partir de CBasePropertyPage. L’exemple suivant montre une partie de la déclaration, y compris certaines variables membres privées qui seront utilisées plus loin dans l’exemple :

class CGrayProp : public CBasePropertyPage
{
private:
    ISaturation *m_pGray;    // Pointer to the filter's custom interface.
    long        m_lVal       // Store the old value, so we can revert.
    long        m_lNewVal;   // New value.
public:
    /* ... */
};

Ensuite, créez une ressource de dialogue dans l’éditeur de ressources, ainsi qu’une ressource de chaîne pour le titre du dialogue. La chaîne s’affiche sous l’onglet de la page de propriétés. Les deux ID de ressource sont des arguments du constructeur CBasePropertyPage :

CGrayProp::CGrayProp(IUnknown *pUnk) : 
  CBasePropertyPage(NAME("GrayProp"), pUnk, IDD_PROPPAGE, IDS_PROPPAGE_TITLE),
  m_pGray(0)
{ }

L’illustration suivante montre la ressource de boîte de dialogue pour l’exemple de page de propriétés.

boîte de dialogue page de propriétés

Vous êtes maintenant prêt à implémenter la page de propriétés. Voici les méthodes à remplacer dans CBasePropertyPage :

  • OnConnect est appelé lorsque le client crée la page de propriétés. Il définit le pointeur IUnknown sur le filtre.
  • OnActivate est appelé lors de la création de la boîte de dialogue.
  • OnReceiveMessage est appelé lorsque la boîte de dialogue reçoit un message de fenêtre.
  • OnApplyChanges est appelé lorsque l’utilisateur valide les modifications de propriété en cliquant sur le bouton OK ou Appliquer .
  • OnDisconnect est appelé lorsque l’utilisateur ignore la feuille de propriétés.

Le reste de ce tutoriel décrit chacune de ces méthodes.

Suivant : Étape 5. Stocker un pointeur vers le filtre.

Création d’une page de propriétés de filtre