Partilhar via


Controles ActiveX MFC: implementação da propriedade avançada

Este artigo descreve os tópicos relacionados ao implementar propriedades avançadas em um controle ActiveX:

  • Propriedades somente leitura e somente gravação

  • Retornando códigos de erro de uma propriedade

Propriedades somente leitura e somente gravação

O assistente para adicionar a propriedade fornece um método rápido e fácil implementar propriedades somente leitura ou somente gravação para o controle.

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

  1. Carregar o projeto do controle.

  2. Na exibição da classe, expanda o nó da biblioteca do controle.

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

  4. No menu de atalho, clique Adicionar e clique em Adicionar Propriedade.

    Isso abre Assistente de adição de propriedade.

  5. Na caixa de Nome da propriedade , digite o nome da propriedade.

  6. Para Tipo de Implementação, clique Get/Set Methods.

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

  8. Se você quiser uma propriedade somente leitura, desmarque o nome da função de conjunto. Se você quiser uma propriedade somente gravação, desmarque o nome da função ser obtido.

  9. Clique em Concluir.

Quando você fizer isso, o assistente da propriedade adicionar insere a função SetNotSupported ou GetNotSupported na entrada do mapa de distribuição no lugar de um conjunto comum ou define a função.

Se você quiser alterar uma propriedade existente para ser somente leitura ou somente gravação, você pode editar o mapa de expedição manualmente e remover o conjunto desnecessários ou obter a função da classe do controle.

Se você quiser uma propriedade para ser condicional somente leitura ou somente gravação (por exemplo, somente quando o controle operar em um modo específico), você pode fornecer o conjunto ou obter a função, como normal, e chama a função de SetNotSupported ou de GetNotSupported onde 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 a seguir chama SetNotSupported se o membro de dados de m_bReadOnlyMode é Verdadeiro. Se Falso, a propriedade é definida no novo valor.

Retornando códigos de erro de uma propriedade

Para indicar que ocorreu um erro ao tentar obter ou definir uma propriedade, use a função de COleControl::ThrowError , que usa SCODE (código de status) como um parâmetro. Você pode usar SCODE predefinido ou definir um de seus próprios. Para obter uma lista de SCODEpredefinido s as instruções e para definir SCODEpersonalizado s, consulte Tratar erros no controle ActiveX nos controles ActiveX de artigo: Tópicos avançados.

As funções auxiliares existem para a maioria de SCODEpredefinido comum s, como COleControl::SetNotSupported, COleControl::GetNotSupported, e COleControl::SetNotPermitted.

Dica

   ThrowError parece ser usado apenas como meio de retornar um erro de uma propriedade obtém ou define a função ou um método de automação.Esses são os únicos hora em que o manipulador de exceção apropriada estiver presente na pilha.

Para obter mais informações sobre as exceções de relatório em outras áreas de código, consulte COleControl::FireError e a seção Tratar erros no controle ActiveX nos controles ActiveX de artigo: Tópicos avançados.

Consulte também

Referência

Classe COleControl

Conceitos

Controles ActiveX MFC

Controles ActiveX MFC: propriedades

Controles ActiveX MFC: métodos