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