Adicionando uma propriedade ao controle (Tutorial ATL, parte 3)
IPolyCtl
é a interface que contém os métodos e propriedades personalizados do controle e você adicionará uma propriedade a ela.
Para adicionar as definições de propriedade ao seu projeto
No Modo de Exibição de Classe, expanda o branch
Polygon
.Clique com o botão direito do mouse em
IPolyCtl
.No menu de atalho, clique em Adicionar e, em seguida, em Adicionar Propriedade. O assistente Adicionar Propriedade será exibido.
Digite
Sides
como o Nome da Propriedade.Na lista suspensa de Tipo de Propriedade, selecione
short
.Clique em OK para terminar de adicionar a propriedade.
Em Gerenciador de Soluções, abra Polygon.idl e substitua as seguintes linhas no final da interface
IPolyCtl : IDispatch
:short get_Sides(); void set_Sides(short value);
por
[propget, id(1), helpstring("property Sides")] HRESULT Sides([out, retval] short *pVal); [propput, id(1), helpstring("property Sides")] HRESULT Sides([in] short newVal);
Em 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 você tenha funções estruturais para definir e recuperar a propriedade e uma variável para armazenar a propriedade, você deve implementar as funções adequadamente.
Para atualizar os métodos get e put
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;
Implemente os métodos
Get
ePut
. As declarações da funçãoget_Sides
eput_Sides
foram adicionadas ao PolyCtl.h. Agora, adicione o código paraget_Sides
eput_Sides
ao 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 propriedade Sides
por meio do ponteiro pVal
. No método put_Sides
, o código garante que o usuário esteja definindo a propriedade Sides
como 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 para a Etapa 2 | Na Etapa 4