Como especificar páginas de propriedades
Ao criar um controle ActiveX, você geralmente deseja associá-lo a páginas de propriedades que podem ser usadas para definir as propriedades do controle. Os contêineres de controle usam a interface ISpecifyPropertyPages
para descobrir quais páginas de propriedades podem ser usadas para definir as propriedades do controle. Você precisará implementar essa interface em seu controle.
Para implementar ISpecifyPropertyPages
o uso da ATL, execute as seguintes etapas:
Derive sua classe de ISpecifyPropertyPagesImpl.
Adicione uma entrada para
ISpecifyPropertyPages
para o mapa COM da sua classe.Adicione uma entrada PROP_PAGE ao mapa de propriedades para cada página associada ao controle.
Observação
Ao gerar um controle padrão usando o Assistente de Controle da ATL, você só precisará adicionar as entradas PROP_PAGE ao mapa de propriedades. O assistente gera o código necessário para as outras etapas.
Contêineres bem comportados exibirão as páginas de propriedade especificadas na mesma ordem que as entradas de PROP_PAGE no mapa de propriedades. Em geral, você deve colocar entradas de página de propriedade padrão após as entradas de suas páginas personalizadas no mapa de propriedades, para que os usuários vejam as páginas específicas do controle primeiro.
Exemplo
A classe a seguir para um controle de calendário usa a interface ISpecifyPropertyPages
para informar aos contêineres que suas propriedades podem ser definidas usando uma página de data personalizada e a página de cores de estoque.
class ATL_NO_VTABLE CMyCtrl :
OtherInterfaces
public ISpecifyPropertyPagesImpl<CMyCtrl>
{
public:
BEGIN_COM_MAP(CMyCtrl)
OtherComMapEntries
COM_INTERFACE_ENTRY(ISpecifyPropertyPages)
END_COM_MAP()
BEGIN_PROP_MAP(CMyCtrl)
OtherPropMapEntries
PROP_PAGE(CLSID_DatePage)
PROP_PAGE(CLSID_StockColorPage)
END_PROP_MAP()
// Remainder of class declaration omitted.