Condividi tramite


Passaggio 4. Creare la pagina delle proprietà

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

A questo punto il filtro supporta tutti gli elementi necessari per una pagina delle proprietà. Il passaggio successivo consiste nell'implementare la pagina delle proprietà stessa. Iniziare derivando una nuova classe da CBasePropertyPage. Nell'esempio seguente viene illustrata parte della dichiarazione, incluse alcune variabili membro private che verranno usate più avanti nell'esempio:

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:
    /* ... */
};

Creare quindi una risorsa finestra di dialogo nell'editor di risorse, insieme a una risorsa stringa per il titolo della finestra di dialogo. La stringa verrà visualizzata nella scheda della pagina delle proprietà. I due ID risorsa sono argomenti per il costruttore CBasePropertyPage :

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

La figura seguente mostra la risorsa della finestra di dialogo per la pagina delle proprietà di esempio.

finestra di dialogo della pagina delle proprietà

A questo momento è possibile implementare la pagina delle proprietà. Ecco i metodi in CBasePropertyPage per eseguire l'override:

  • OnConnect viene chiamato quando il client crea la pagina delle proprietà. Imposta il puntatore IUnknown sul filtro.
  • OnActivate viene chiamato quando viene creata la finestra di dialogo.
  • OnReceiveMessage viene chiamato quando il dialogo riceve un messaggio di finestra.
  • OnApplyChanges viene chiamato quando l'utente esegue il commit delle modifiche della proprietà facendo clic sul pulsante OK o Applica .
  • OnDisconnect viene chiamato quando l'utente ignora la finestra delle proprietà.

Nella parte restante di questa esercitazione vengono descritti ognuno di questi metodi.

Successivo: Passaggio 5. Archiviare un puntatore al filtro.

Creazione di una pagina delle proprietà filtro