Etapa 3: Adicionando uma propriedade para o controle

IPolyCtl é a interface que contém os métodos personalizados e propriedades de controle, e você adicionar uma propriedade.

Para adicionar uma propriedade usando o assistente para adicionar propriedade

  1. Em o modo da classe, expanda a ramificação polígono.

  2. Clique com o botão direito do mouse IPolyCtl.

  3. Em o menu de atalho, clique Adicionar, clique em Adicionar Propriedade.

    O assistente de propriedade adicionar aparecerá.

  4. Em a lista suspensa de tipos de propriedades, SHORTselecione.

  5. Tipo lados como Nome da propriedade.

  6. Clique em para concluir Concluir adicionar a propriedade.

Quando você adiciona a propriedade para a interface, MIDL (o programa que compila arquivos de .idl) define um método de Get para recuperar seu valor e um método de Put para definir um novo valor.Os métodos são chamados prepending put_ e get_ ao nome da propriedade.

O assistente de propriedade adicionar adiciona as linhas necessárias para o arquivo de .idl.Ele também adiciona os protótipos de função de Get e de Put a definição de classe em PolyCtl.h e adiciona uma implementação vazio a PolyCtl.cpp.Você pode verificar isso PolyCtl.cpp abrindo e procurando as funções get_Sides e put_Sides.

Embora você tenha agora as funções de esqueleto para definir e recuperar a propriedade, precisa de um local de ser armazenada.Você criará uma variável para armazenar a propriedade e para atualizar em conformidade com as funções.

Para criar uma variável para armazenar a propriedade, e para atualizar colocado e métodos para obter

  1. Em o solution Explorer, PolyCtl.h abertos e adicione a seguinte linha após a definição de m_clrFillColor:

    short m_nSides;
    
  2. Defina o valor padrão de m_nSides.Faça a maneira padrão um triângulo adicionando uma linha para o construtor em PolyCtl.h:

    m_nSides = 3;
    
  3. Implementar métodos de Get e de Put .Declarações de função de get_Sides e de put_Sides foram adicionados a PolyCtl.h.Substitua o código em PolyCtl.cpp para get_Sides e em put_Sides com o seguinte código:

    STDMETHODIMP CPolyCtl::get_Sides(short* pVal)
    {
       *pVal = m_nSides;
    
       return S_OK;
    }
    
    STDMETHODIMP CPolyCtl::put_Sides(short newVal)
    {
       if (2 < newVal && newVal < 101)
       {
          m_nSides = newVal;
          return S_OK;
       }
       else
       {
          return Error(_T("Shape must have between 3 and 100 sides"));
       }
    }
    

O método de get_Sides retorna o valor atual da propriedade de Sides através do ponteiro de pVal .Em o método de put_Sides , o código garante que o usuário está definindo a propriedade de Sides a um valor aceitável.O mínimo deve ser 2, e como uma matriz de pontos será usada para cada lado, 100 é um limite razoável para um valor máximo.

Agora você tem uma propriedade chamada Sides.Em o próximo passo, você irá alterar o código de desenho usá-lo.

De volta para a etapa 2 | a etapa 4

Consulte também

Referência

Tutorial de ATL