Controles MFC ActiveX: Implementação de propriedade avançada

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

  • 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 propriedade fornece um método rápido e fácil de implementar propriedades somente leitura ou somente gravação para o controle.

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

  1. Carregar projeto do controle.

  2. No modo de exibição de classe, expanda o nó da biblioteca do seu controle.

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

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

    Isso abre o Assistente para adicionar propriedade.

  5. No O nome da propriedade , digite o nome da sua propriedade.

  6. Para O tipo de implementação, clique Métodos Get/Set.

  7. No Propriedade tipo , selecione o tipo apropriado para a propriedade.

  8. Se você desejar uma propriedade somente leitura, desmarque o nome de função do conjunto.Se você desejar uma propriedade somente gravação, desmarque o nome da função Get.

  9. Clique em Concluir.

Quando você fizer isso, o Assistente para adicionar propriedade insere a função SetNotSupported ou GetNotSupported na entrada do mapa de expedição no lugar de um normal definir ou obter a função.

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

Se você desejar uma propriedade para ser condicionalmente somente leitura ou somente gravação (por exemplo, somente quando o controle está operando em um determinado modo), pode fornecer a função Set ou Get, como normal e chamar o SetNotSupported ou GetNotSupported função 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 chama SetNotSupported se o m_bReadOnlyMode é membro de dados TRUE.Se FALSE, a propriedade será definida para o novo valor.

Retornando códigos de erro de uma propriedade

Para indicar que ocorreu um erro ao tentar obter ou definir uma propriedade, use o COleControl::ThrowError função, que leva um SCODE (código de status) como um parâmetro.Você pode usar um modelo predefinido SCODE ou definir sua própria.Para obter uma lista de predefinidos SCODEs e instruções de definição personalizada SCODEs, consulte Manipulando erros em seu controle de ActiveX nos controles de ActiveX do artigo: tópicos avançados.

Funções auxiliares existem para o mais comum predefinido SCODEs, como COleControl::SetNotSupported, COleControl::GetNotSupported, e COleControl::SetNotPermitted.

ObservaçãoObservação

   ThrowErrordeve ser usado apenas como um meio de retornar um erro de dentro Get da propriedade ou Set função ou um método de automação.Essas são as únicas vezes que o manipulador de exceção apropriado será apresentam na pilha.

Para obter mais informações sobre relatórios de exceções em outras áreas do código, consulte COleControl::FireError e Manipulando erros em seu controle de ActiveX no artigo ActiveX controles: tópicos avançados.

Consulte também

Referência

Classe COleControl

Conceitos

Controles de ActiveX do MFC

Controles de ActiveX MFC: propriedades

Controles de ActiveX MFC: métodos