Os controles ActiveX MFC: 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 gravar
Retornar 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 para implementar propriedades somente leitura ou somente gravar para o controle.
Para implementar uma propriedade somente leitura ou somente gravar
Carregar projeto do controle.
No modo de exibição de classe, expandir o nó de biblioteca do seu controle.
clicar com o botão direito do mouse no nó de interface para o seu controle (o segundo nó do nó biblioteca) para em em aberto o menu de atalho.
No menu de atalho, clicar Adicionar e, em seguida, clicar Adicionar propriedade.
Isso abre o Adicionar Assistente de propriedade.
No Nome da propriedade, digite o nome de sua propriedade.
For Tipo de implementação, clicar Obtém/define métodos.
No Tipo da propriedade caixa, selecionar o apropriado tipo para a propriedade.
Se desejar que uma propriedade somente leitura, desmarcar o nome da função conjunto.Se desejar que uma propriedade somente gravar, desmarcar o nome da função get.
Clique em Finish.
Quando você fizer isso, o Assistente para adicionar propriedade insere a função SetNotSupported ou GetNotSupported na entrada do MAP de expedição no lugar de um normal conjunto ou Get função.
Se você desejar alterar uma propriedade somente leitura ou somente gravar existente, você pode edição manualmente o MAP de despacho e remover a função conjunto ou Get desnecessária da classe de controle.
Se você desejar que uma propriedade para ser condicionalmente somente leitura ou somente gravar (por exemplo, somente quando o controle está operando em um determinado modo), você pode oferecer a função conjunto ou Get, normalmente e chamar o SetNotSupported ou GetNotSupported funcione 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 a m_bReadOnlyMode é membro de dados TRUE.If FALSE, em seguida, a propriedade é definida como o novo valor.
Retornando códigos de erro de uma propriedade
Para indicar que ocorreu um erro ao tentar obter ou conjunto uma propriedade, use o COleControl::ThrowError função, que leva uma SCODE (código de status) sistema autônomo um parâmetro. Você pode usar um predefinidos SCODE ou defina uma de sua preferência. Para obter uma lista predefinida de SCODEs e instruções para a definição personalizadas SCODEs, consulte Manipulando erros em seu controle ActiveX no artigo de controles ActiveX: Tópicos avançados.
Existem funções auxiliares para a mais comuns predefinidos SCODEsistema autônomo, sistema autônomo COleControl::SetNotSupported, COleControl::GetNotSupported, and COleControl::SetNotPermitted.
Observação: |
---|
ThrowError deve ser usado apenas sistema autônomo um meio de retornar um erro de dentro Get da propriedade ou conjunto. função ou um método de automação. Esses são os únicos vezes que o manipulador de exceção apropriado será apresentam na pilha. |
Para obter mais informações sobre exceções em outras áreas do código de geração de relatórios, consulte COleControl::FireError e a seção Manipulando erros em seu controle ActiveX no artigo controles ActiveX: Tópicos avançados.
Consulte também
Conceitos
Os controles ActiveX MFC: Propriedades
Os controles ActiveX MFC: Métodos