Classe CBasePropertyPage

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

Gerarchia di classi cbasepropertypage

La CBasePropertyPage classe è una classe astratta per l'implementazione di una pagina delle proprietà. Utilizzare questa classe se si scrive un filtro (o un altro oggetto) che supporta le pagine delle proprietà.

Variabili membro protette Descrizione
m_bDirty Indica se una delle proprietà è stata modificata.
m_DialogId Identificatore della risorsa per la finestra di dialogo.
m_Dlg Handle per la finestra di dialogo.
M_hwnd Handle per la finestra di dialogo.
m_pPageSite Puntatore all'interfaccia IPropertyPageSite del sito della pagina delle proprietà.
m_TitleId Identificatore di risorsa per una stringa contenente il titolo della finestra di dialogo.
Metodi pubblici Descrizione
CBasePropertyPage Metodo del costruttore.
~CBasePropertyPage Metodo distruttore. Virtuale.
Onactivate Viene chiamato quando viene attivata la pagina delle proprietà. Virtuale.
OnApplyChanges Viene chiamato quando l'utente applica le modifiche alla pagina delle proprietà. Virtuale.
OnConnect Fornisce un puntatore IUnknown all'oggetto associato alla pagina delle proprietà. Virtuale.
Ondeactivate Chiamato quando la finestra di dialogo viene eliminata definitivamente. Virtuale.
OnDisconnect Chiamato quando la pagina delle proprietà deve rilasciare l'oggetto associato. Virtuale.
OnReceiveMessage Chiamato quando la finestra di dialogo riceve un messaggio. Virtuale.
Metodi IPropertyPage Descrizione
Attiva Crea la finestra di dialogo.
Applica Applica i valori correnti della pagina delle proprietà all'oggetto associato alla pagina delle proprietà
Disattivare Elimina definitivamente la finestra di dialogo.
GetPageInfo Recupera informazioni sulla pagina delle proprietà.
Help Richiama la Guida della pagina delle proprietà.
IsPageDirty Indica se la pagina delle proprietà è stata modificata dopo l'attivazione o dopo la chiamata più recente a IPropertyPage::Apply.
Sposta Posiziona e ridimensiona la finestra di dialogo.
SetObjects Fornisce i puntatori IUnknown per gli oggetti associati alla pagina delle proprietà.
SetPageSite Inizializza la pagina delle proprietà.
Mostra Visualizza o nasconde la finestra di dialogo.
TranslateAccelerator Indica alla pagina delle proprietà di elaborare una sequenza di tasti.

Commenti

Una pagina delle proprietà è un oggetto COM, pertanto è necessario generare un GUID per l'identificatore di classe (CLSID) e fornire una voce nella matrice CFactoryTemplate . Per altre informazioni, vedere DirectShow e COM. L'esempio seguente mostra una voce di class factory tipica:

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

Il filtro deve esporre l'interfaccia ISpecifyPropertyPages . Questa interfaccia contiene un singolo metodo, GetPages, che restituisce il CLSID della pagina delle proprietà. L'esempio seguente illustra come implementare questo metodo:

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;
} 

Ricordarsi di eseguire l'override del metodo NonDelegatingQueryInterface del filtro. Per altre informazioni, vedere DirectShow e COM eINonDelegatingUnknown.

Creare quindi la finestra di dialogo come risorsa nel progetto e creare una risorsa stringa contenente il titolo della finestra di dialogo. Entrambi questi ID risorsa sono parametri per il costruttore CBasePropertyPage . Mantenere la stringa del titolo in una risorsa semplifica la localizzazione della pagina delle proprietà.

La classe CBasePropertyPage fornisce un framework per l'interfaccia IPropertyPage . Questo framework chiama diversi metodi virtuali, tra cui CBasePropertyPage::OnActivate, CBasePropertyPage::OnApplyChanges e così via. Nella classe base questi metodi restituiscono semplicemente S_OK. La classe derivata dovrà eseguire l'override di alcuni o di tutti questi metodi virtuali. Per informazioni dettagliate, vedere le osservazioni per i singoli metodi.

Per un esempio esteso di come usare questa classe per creare una pagina delle proprietà, vedere Creazione di una pagina delle proprietà filtro.

Requisiti

Requisito Valore
Intestazione
Cprop.h (include Streams.h)
Libreria
Strmbase.lib (build retail);
Strmbasd.lib (build di debug)