CBasePropertyPage (clase)

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

Jerarquía de clases cbasepropertypage

La CBasePropertyPage clase es una clase abstracta para implementar una página de propiedades. Use esta clase si está escribiendo un filtro (u otro objeto) que admita páginas de propiedades.

Variables miembro protegidas Descripción
m_bDirty Indica si alguna de las propiedades ha cambiado.
m_DialogId Identificador de recurso para el cuadro de diálogo.
m_Dlg Identificador de la ventana del cuadro de diálogo.
m_hwnd Identificador de la ventana del cuadro de diálogo.
m_pPageSite Puntero a la interfaz IPropertyPageSite del sitio de página de propiedades.
m_TitleId Identificador de recurso de una cadena que contiene el título del cuadro de diálogo.
Métodos públicos Descripción
CBasePropertyPage Método constructor.
~CBasePropertyPage Método de destructor. Virtual.
OnActivate Se llama cuando se activa la página de propiedades. Virtual.
OnApplyChanges Se llama cuando el usuario aplica cambios a la página de propiedades. Virtual.
OnConnect Proporciona un puntero IUnknown al objeto asociado a la página de propiedades. Virtual.
OnDeactivate Se llama cuando se destruye la ventana del cuadro de diálogo. Virtual.
OnDisconnect Se llama cuando la página de propiedades debe liberar el objeto asociado. Virtual.
OnReceiveMessage Se llama cuando el cuadro de diálogo recibe un mensaje. Virtual.
Métodos IPropertyPage Descripción
Activar Crea la ventana del cuadro de diálogo.
Aplicar Aplica los valores de página de propiedades actuales al objeto asociado a la página de propiedades.
Desactivación Destruye la ventana de diálogo.
GetPageInfo Recupera información sobre la página de propiedades.
Ayuda Invoca la ayuda de la página de propiedades.
IsPageDirty Indica si la página de propiedades ha cambiado desde que se activó o desde la llamada más reciente a IPropertyPage::Apply.
Move Coloca y cambia el tamaño del cuadro de diálogo.
SetObjects Proporciona punteros IUnknown para los objetos asociados a la página de propiedades.
SetPageSite Inicializa la página de propiedades.
Mostrar Muestra u oculta el cuadro de diálogo.
TranslateAccelerator Indica a la página de propiedades que procese una pulsación de tecla.

Observaciones

Una página de propiedades es un objeto COM, por lo que debe generar un GUID para el identificador de clase (CLSID) y proporcionar una entrada en la matriz CFactoryTemplate . Para obtener más información, vea DirectShow y COM. En el ejemplo siguiente se muestra una entrada típica de generador de clases:

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

El filtro debe exponer la interfaz ISpecifyPropertyPages . Esta interfaz contiene un único método, GetPages, que devuelve el CLSID de la página de propiedades. En el ejemplo siguiente se muestra cómo implementar este método:

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

No olvide invalidar también el método NonDelegatingQueryInterface del filtro. Para obtener más información, vea DirectShow y COM eINonDelegatingUnknown.

A continuación, cree el cuadro de diálogo como un recurso en el proyecto y cree un recurso de cadena que contenga el título del diálogo. Ambos identificadores de recursos son parámetros para el constructor CBasePropertyPage . Mantener la cadena de título en un recurso facilita la localización de la página de propiedades.

La clase CBasePropertyPage proporciona un marco para la interfaz IPropertyPage . Este marco llama a una serie de métodos virtuales, incluidos CBasePropertyPage::OnActivate, CBasePropertyPage::OnApplyChanges, etc. En la clase base, estos métodos simplemente devuelven S_OK. La clase derivada deberá invalidar algunos o todos estos métodos virtuales. Para obtener más información, consulte los comentarios de los métodos individuales.

Para obtener un ejemplo extendido de cómo usar esta clase para crear una página de propiedades, vea Creating a Filter Property Page.

Requisitos

Requisito Value
Encabezado
Cprop.h (include Streams.h)
Biblioteca
Strmbase.lib (compilaciones comerciales);
Strmbasd.lib (compilaciones de depuración)