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
Carregar projeto do controle.
No modo de exibição de classe, expanda o nó da biblioteca do seu controle.
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.
No menu de atalho, clique em Add e clique em Adicionar propriedade de.
Isso abre o Assistente para adicionar propriedade.
No O nome da propriedade , digite o nome da sua propriedade.
Para O tipo de implementação, clique Métodos Get/Set.
No Propriedade tipo , selecione o tipo apropriado para a propriedade.
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.
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çã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.