Partilhar via


Controles ActiveX MFC: Implementação Avançada de Propriedades

Este artigo descreve tópicos relacionados à implementação de propriedades avançadas em um controle ActiveX.

Importante

ActiveX é uma tecnologia herdada que não deve ser usada para novos desenvolvimentos. Para obter mais informações sobre tecnologias modernas que substituem o ActiveX, consulte Controles ActiveX.

Propriedades de Read-Only e Write-Only

O Assistente para Adicionar Propriedades fornece um método rápido e fácil para implementar propriedades somente leitura ou somente gravação para o controle.

Para implementar uma propriedade somente leitura ou somente gravação

  1. Carregue o projeto do seu controlador.

  2. Na Vista de Classe, expanda o nó da biblioteca do seu controle.

  3. Clique com o botão direito do mouse no nó da interface do seu controle (o segundo nó do nó da biblioteca) para abrir o menu de atalho.

  4. No menu de atalho, clique em Adicionar e, em seguida, clique em Adicionar propriedade.

    Isso abre o Assistente para Adicionar Propriedade.

  5. Na caixa Nome da propriedade , digite o nome do seu estabelecimento.

  6. Para Tipo de implementação, clique em Obter/definir métodos.

  7. Na caixa Tipo de propriedade , selecione o tipo adequado para a propriedade.

  8. Se desejar uma propriedade somente leitura, apague o nome da função set. Se quiser uma propriedade só de escrita, apague o nome da função Get.

  9. Clique em Concluir.

Quando fazes isso, o Assistente para Adicionar Propriedade insere a função SetNotSupported ou GetNotSupported na entrada do mapa de despacho no lugar de uma função normal set ou get.

Se desejar alterar uma propriedade existente para somente leitura ou somente gravação, você poderá editar o mapa de despacho manualmente e remover a função set ou Get desnecessária da classe de controle.

Se desejar que uma propriedade seja condicionalmente de apenas leitura ou apenas gravação (por exemplo, somente quando o controlo está a operar num modo específico), pode fornecer a função set ou get, como de costume, e chamar a função SetNotSupported ou GetNotSupported quando apropriado. Por exemplo:

void CMyAxUICtrl::SetMyProperty(SHORT newVal)
{
   AFX_MANAGE_STATE(AfxGetStaticModuleState());

   if (m_bReadOnlyMode)   //  some control-specific state
   {
      SetNotSupported();
   }
   else
   {
      m_iPropVal = newVal;   //  set property as normal
      SetModifiedFlag();
   }
}

Este exemplo de código chama SetNotSupported se o membro de dados m_bReadOnlyMode for TRUE. Se FALSE, a propriedade é definida como o novo valor.

Retornar Códigos de Erro de uma Propriedade

Para indicar que ocorreu um erro ao tentar obter ou definir uma propriedade, use a COleControl::ThrowError função, que usa um SCODE (código de status) como parâmetro. Você pode usar um SCODE predefinido ou definir um dos seus próprios. Para obter uma lista de SCODEs predefinidos e instruções para definir SCODEs personalizados, consulte Manipulando erros em seu controle ActiveX no artigo Controles ActiveX: tópicos avançados.

Existem funções auxiliares para os SCODEs predefinidos mais comuns, como COleControl::SetNotSupported, COleControl::GetNotSupport e COleControl::SetNotPermitted.

Observação

ThrowError destina-se a ser usado apenas como um meio de retornar um erro de dentro da função Get ou Set de uma propriedade ou de um método de automação. Essas são as únicas vezes em que o manipulador de exceção apropriado estará presente na pilha.

Para obter mais informações sobre como relatar exceções em outras áreas do código, consulte COleControl::FireError e a seção Manipulando erros em seu controle ActiveX no artigo Controles ActiveX: tópicos avançados.

Ver também

Controles ActiveX MFC
Controles ActiveX MFC: Propriedades
Controles ActiveX MFC: Métodos
Classe COleControl