Controles ActiveX MFC: adicionando outra página de propriedade personalizada

Ocasionalmente, um controle ActiveX terá mais propriedades do que pode caber razoavelmente em uma página de propriedades. Nesse caso, você pode adicionar páginas de propriedades ao controle ActiveX para exibir essas propriedades.

Este artigo aborda a adição de novas páginas de propriedades a um controle ActiveX que já tenha pelo menos uma página de propriedade. Para obter mais informações sobre como adicionar páginas de propriedades de estoque (fonte, imagem ou cor), consulte o artigo Controles ActiveX do MFC: usando páginas de propriedades de estoque.

Os procedimentos a seguir usam um exemplo de estrutura de controle ActiveX criada pelo Assistente de Controle ActiveX. Portanto, os nomes de classe e os identificadores são exclusivos para este exemplo.

Para obter mais informações sobre como usar páginas de propriedades em um controle ActiveX, consulte os seguintes artigos:

Para inserir um novo modelo de página de propriedades no projeto

  1. Com o projeto de controle aberto, abra o Modo de Exibição de Recursos no workspace do projeto.

  2. Clique com o botão direito do mouse no Modo de Exibição de Recursos para abrir o menu de atalho e clique em Adicionar Recurso.

  3. Expanda o nó Caixa de Diálogo e selecione IDD_OLE_PROPPAGE_SMALL.

  4. Clique em Novo para adicionar o recurso ao projeto.

  5. Selecione o novo modelo de página de propriedades para atualizar a janela Propriedades (no Modo de Exibição de Recursos).

  6. Insira um novo valor para a propriedade ID. Este exemplo usa IDD_PROPPAGE_NEWPAGE.

  7. Clique em Salvar na barra de ferramentas.

Para associar o novo modelo a uma classe

  1. Abra o Modo de Exibição de Classe.

  2. Clique com o botão direito do mouse no Modo de Exibição de Classe para abrir o menu de atalho.

  3. No menu de atalho, clique em Adicionar e em Adicionar Classe.

    Isso abrirá a caixa de diálogo Adicionar Classe.

  4. Clique duas vezes no modelo Classe MFC.

  5. Na caixa Nome da Classe no Assistente de Classe MFC, digite um nome para a nova classe de caixa de diálogo. (Neste exemplo, CAddtlPropPage.)

  6. Se quiser alterar nomes de arquivo, clique em Alterar. Digite os nomes de seus arquivos de implementação e cabeçalho ou aceite os nomes padrão.

  7. Na caixa Classe Base, selecione COlePropertyPage.

  8. Na caixa ID da Caixa de Diálogo, selecione IDD_PROPPAGE_NEWPAGE.

  9. Clique em Concluir para criar o a classe.

Para permitir que os usuários do controle acessem essa nova página de propriedades, faça as seguintes alterações na seção de macros das IDs da página de propriedades do controle (localizada no arquivo de implementação do controle):

BEGIN_PROPPAGEIDS(CMyAxUICtrl, 2)
   PROPPAGEID(CMyAxUIPropPage::guid)
   PROPPAGEID(CAddtlPropPage::guid)
END_PROPPAGEIDS(CMyAxUICtrl)

Observe que você precisa aumentar o segundo parâmetro da macro BEGIN_PROPPAGEIDS (a contagem de páginas de propriedades) de 1 para 2.

Você também deve modificar o arquivo de implementação do controle (.CPP) para incluir o arquivo de cabeçalho (.H) da nova classe de página de propriedades.

A próxima etapa envolve a criação de dois recursos de cadeia de caracteres que fornecerão um nome de tipo e uma legenda para a nova página de propriedades.

Para adicionar novos recursos de cadeia de caracteres a uma página de propriedades

  1. Com o projeto de controle aberto, abra o Modo de Exibição de Recursos.

  2. Clique duas vezes na pasta Tabela de Cadeia de Caracteres e clique duas vezes no recurso de tabela de cadeia de caracteres existente ao qual você deseja adicionar uma cadeia de caracteres.

    Isso abre a tabela de cadeia de caracteres em uma janela.

  3. Selecione a linha em branco no final da tabela de cadeia de caracteres e digite o texto, ou legenda, da cadeia de caracteres: por exemplo, "Página de propriedades adicional".

    Isso abre uma página Propriedades da Cadeia de Caracteres mostrando as caixas Legenda e ID. A caixa Legenda contém a cadeia de caracteres que você digitou.

  4. Na caixa ID, selecione ou digite uma ID para a cadeia de caracteres. Pressione Enter ao concluir.

    Este exemplo usa IDS_SAMPLE_ADDPAGE para o nome do tipo da nova página de propriedades.

  5. Repita as etapas 3 e 4 usando IDS_SAMPLE_ADDPPG_CAPTION para a ID e "Página de propriedades adicional" para a legenda.

  6. No arquivo .CPP da nova classe da página de propriedades (neste exemplo, CAddtlPropPage), modifique o CAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry de modo que IDS_SAMPLE_ADDPAGE seja passado por AfxOleRegisterPropertyPageClass, como no seguinte exemplo:

    BOOL CAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry(BOOL bRegister)
    {
       if (bRegister)
          return AfxOleRegisterPropertyPageClass(AfxGetInstanceHandle(),
             m_clsid, IDS_SAMPLE_ADDPAGE);
       else
          return AfxOleUnregisterClass(m_clsid, NULL);
    }
    
  7. Modifique o construtor de CAddtlPropPage para que IDS_SAMPLE_ADDPPG_CAPTION seja passado para o construtor COlePropertyPage, da seguinte maneira:

    CAddtlPropPage::CAddtlPropPage() :
       COlePropertyPage(IDD, IDS_SAMPLE_ADDPPG_CAPTION)
    {
    
    }
    

Depois de fazer as modificações necessárias, recompile o projeto e use o Contêiner de Teste para testar a nova página de propriedades. Confira Testar Propriedades e Eventos com o Contêiner de Testes para obter informações sobre como acessar o contêiner de testes.

Confira também

Controles ActiveX do MFC