Classe CBasePropertyPage

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Hierarquia da classe cbasepropertypage

A CBasePropertyPage classe é uma classe abstrata para implementar uma página de propriedades. Use essa classe se você estiver escrevendo um filtro (ou outro objeto) que dê suporte a páginas de propriedades.

Variáveis de membro protegidas Descrição
m_bDirty Indica se alguma das propriedades foi alterada.
m_DialogId Identificador de recurso para a caixa de diálogo.
m_Dlg Manipule para a janela da caixa de diálogo.
M_hwnd Manipule para a janela da caixa de diálogo.
m_pPageSite Ponteiro para a interface IPropertyPageSite do site da página de propriedades.
m_TitleId Identificador de recurso para uma cadeia de caracteres que contém o título da caixa de diálogo.
Métodos públicos Descrição
Cbasepropertypage Método de construtor.
~Cbasepropertypage Método de destruidor. Virtual.
Onactivate Chamado quando a página de propriedades é ativada. Virtual.
Onapplychanges Chamado quando o usuário aplica alterações à página de propriedades. Virtual.
Onconnect Fornece um ponteiro IUnknown para o objeto associado à página de propriedades. Virtual.
Ondeactivate Chamado quando a janela da caixa de diálogo é destruída. Virtual.
OnDisconnect Chamado quando a página de propriedades deve liberar o objeto associado. Virtual.
OnReceiveMessage Chamado quando a caixa de diálogo recebe uma mensagem. Virtual.
Métodos IPropertyPage Descrição
Ativar Cria a janela da caixa de diálogo.
Aplicar Aplica os valores da página de propriedades atual ao objeto associado à página de propriedades
Desativar Destrói a janela da caixa de diálogo.
Getpageinfo Recupera informações sobre a página de propriedade.
Ajuda Invoca a ajuda da página de propriedades.
IsPageDirty Indica se a página de propriedades foi alterada desde que foi ativada ou desde a chamada mais recente para IPropertyPage::Apply.
Mover Posiciona e redimensiona a caixa de diálogo.
SetObjects Fornece ponteiros IUnknown para os objetos associados à página de propriedades.
SetPageSite Inicializa a página de propriedades.
Mostrar Mostra ou oculta a caixa de diálogo.
TranslateAccelerator Instrui a página de propriedades a processar um pressionamento de tecla.

Comentários

Uma página de propriedades é um objeto COM, portanto, você deve gerar um GUID para o CLSID (identificador de classe) e fornecer uma entrada na matriz CFactoryTemplate . Para obter mais informações, consulte DirectShow e COM. O exemplo a seguir mostra uma entrada típica de fábrica de classes:

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

Seu filtro deve expor a interface ISpecifyPropertyPages . Essa interface contém um único método, GetPages, que retorna o CLSID da página de propriedades. O exemplo a seguir mostra como implementar esse 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;
} 

Lembre-se de substituir o método NonDelegatingQueryInterface do filtro também. Para obter mais informações, consulte DirectShow e COM e INonDelegatingUnknown.

Em seguida, crie a caixa de diálogo como um recurso em seu projeto e crie um recurso de cadeia de caracteres que contenha o título da caixa de diálogo. Ambas as IDs de recurso são parâmetros para o construtor CBasePropertyPage . Manter a cadeia de caracteres de título em um recurso facilita a localização da página de propriedades.

A classe CBasePropertyPage fornece uma estrutura para a interface IPropertyPage . Essa estrutura chama vários métodos virtuais, incluindo CBasePropertyPage::OnActivate, CBasePropertyPage::OnApplyChanges e assim por diante. Na classe base, esses métodos simplesmente retornam S_OK. Sua classe derivada precisará substituir alguns ou todos esses métodos virtuais. Para obter detalhes, consulte os comentários para os métodos individuais.

Para obter um exemplo estendido de como usar essa classe para criar uma página de propriedades, consulte Criando uma página de propriedades de filtro.

Requisitos

Requisito Valor
parâmetro
Cprop.h (incluir Streams.h)
Biblioteca
Strmbase.lib (builds de varejo);
Strmbasd.lib (builds de depuração)