Adicionando uma propriedade ao controle (Tutorial ATL, Parte 3)

Observação

A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

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

Para adicionar as definições de propriedade ao seu projeto

  1. Na Vista de Classe, expanda a Polygon ramificação.

  2. Clique com o botão direito do rato em IPolyCtl.

  3. No menu de atalho, clique em Adicionar e, em seguida, clique em Adicionar propriedade. O assistente Adicionar propriedade irá aparecer.

  4. Digite Sides como o nome da propriedade.

  5. Na lista suspensa de Tipo de propriedade, selecione short.

  6. Clique em OK para concluir a adição da propriedade.

  7. No Gerenciador de Soluções, abra Polygon.idl e substitua as seguintes linhas no final da IPolyCtl : IDispatch interface:

    short get_Sides();
    void set_Sides(short value);
    

    com o

    [propget, id(1), helpstring("property Sides")] HRESULT Sides([out, retval] short *pVal);
    [propput, id(1), helpstring("property Sides")] HRESULT Sides([in] short newVal);
    
  8. No Gerenciador de Soluções, abra PolyCtl.h e adicione as seguintes linhas após a definição de m_clrFillColor:

    short m_nSides;
    STDMETHOD(get_Sides)(short* pval);
    STDMETHOD(put_Sides)(short newval);
    

Embora agora disponhas de funções básicas para definir e recuperar a propriedade, além de uma variável para armazená-la, deves implementar as funções de acordo.

Para atualizar os métodos get e put

  1. Defina o valor padrão de m_nSides. Torne a forma padrão um triângulo adicionando uma linha ao construtor em PolyCtl.h:

    m_nSides = 3;
    
  2. Implemente os métodos Get e Put. As declarações de função get_Sides e put_Sides foram adicionadas ao PolyCtl.h. Agora adicione o código para get_Sides e put_Sides para PolyCtl.cpp com o seguinte:

    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 get_Sides retorna o valor atual da Sides propriedade através do ponteiro pVal. put_Sides No método, o código garante que o usuário está definindo a Sides propriedade para um valor aceitável. O mínimo deve ser 3, 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. Na próxima etapa, você alterará o código de desenho para usá-lo.

Voltar ao Passo 2 | Rumo ao Passo 4

Ver também

Tutoriais