Controles ActiveX MFC: adicionando propriedades de estoque
As propriedades de estoque diferem de propriedades personalizadas que já estão implementadas pela classe COleControl. COleControl contém as funções de membro predefinidas que dão suporte a propriedades comuns para o controle. Algumas propriedades comuns incluem a legenda de controle e o primeiro plano e as cores de plano de fundo. Para obter mais informações sobre outras propriedades de estoque, consulte Propriedades de estoque suporte pelo assistente para adicionar propriedade posteriormente neste artigo. As entradas do mapa de distribuição para as propriedades de estoque sempre são prefixadas por DISP_STOCKPROP.
Este artigo descreve como adicionar uma propriedade de estoque (nesse caso, a legenda) a um controle ActiveX usando o assistente da propriedade adicionar e explica as alterações resultantes de código. Os tópicos incluem:
Usando o assistente para adicionar a propriedade para adicionar uma propriedade de estoque
Adicionar alterações do assistente de propriedade para as propriedades de estoque
Propriedades de estoque suporte pelo assistente para adicionar propriedade
Propriedades e notificação de estoque
Propriedades de cores
Dica
Os controles personalizados do Visual Basic normalmente têm propriedades como a parte superior esquerda, largura, altura, alinhar-las, etiquetam-nas, nomeiam-nas, TabIndex, tabulação, e pai.Os contêineres do controle ActiveX, porém, são responsáveis por implementar essas propriedades de controle e como consequência os controles ActiveX não devem oferecer suporte a essas propriedades.
Usando o assistente para adicionar a propriedade para adicionar uma propriedade de estoque
Adicione as propriedades de estoque requer menos códigos de unirem-se propriedades personalizadas como o suporte para a propriedade é tratado automaticamente por COleControl. O procedimento a seguir demonstra como adicionar a propriedade de estoque de legenda a uma estrutura de controle ActiveX e também pode ser usado para adicionar outras propriedades de estoque. Substitua o nome da propriedade de estoque selecionado para a legenda.
Para adicionar a propriedade de estoque de legenda usando o assistente para adicionar propriedade
Carregar o projeto do controle.
Na exibição da classe, expanda o nó da biblioteca do controle.
Clique com o botão direito do mouse no nó da interface para o controle (o segundo nó do nó da biblioteca) para abrir o menu de atalho.
No menu de atalho, clique Adicionar e clique em Adicionar Propriedade.
Isso abre Assistente de adição de propriedade.
Na caixa de Nome da propriedade , clique Legenda.
Clique em Concluir.
Adicionar alterações do assistente de propriedade para as propriedades de estoque
Como as propriedades de estoque da suporte de COleControl , o assistente da propriedade adicionar não alteram a declaração de classe de nenhuma forma; adiciona a propriedade no mapa da remessa. O assistente da propriedade adicionar adiciona a seguinte linha no mapa da expedição de controle, que está localizado no arquivo de implementação (.CPP):
DISP_STOCKPROP_CAPTION()
A seguinte linha é adicionada ao arquivo da descrição da interface de controle (.IDL):
[id(DISPID_CAPTION), helpstring("property Caption")] BSTR Caption;
Essa linha atribui um valor a propriedade de legenda uma ID específico Observe que a propriedade é bindable e solicitará a permissão do base de dados antes de alterar o valor.
Isso torna a propriedade de legenda disponível para usuários do controle. Para usar o valor de uma propriedade de estoque, acessar uma variável de membro ou uma função de membro da classe base de COleControl . Para obter mais informações sobre essas variáveis e funções do membro, consulte a próxima seção, armazena as propriedades suportadas pelo assistente para adicionar a propriedade.
Propriedades de estoque suporte pelo assistente para adicionar propriedade
A classe de COleControl fornece nove propriedades de estoque. Você pode adicionar as propriedades desejadas usando o assistente para adicionar a propriedade.
Propriedade |
Entrada do mapa de distribuição |
Como acessar o valor |
---|---|---|
Aparência |
DISP_STOCKPROP_APPEARANCE () |
Valor acessível como m_sAppearance. |
BackColor |
DISP_STOCKPROP_BACKCOLOR () |
Valor acessível chamando GetBackColor. |
BorderStyle |
DISP_STOCKPROP_BORDERSTYLE () |
Valor acessível como m_sBorderStyle. |
Legenda |
DISP_STOCKPROP_CAPTION () |
Valor acessível chamando InternalGetText. |
Enabled |
DISP_STOCKPROP_ENABLED () |
Valor acessível como m_bEnabled. |
Fonte |
DISP_STOCKPROP_FONT () |
Consulte o artigo Controles ActiveX MFC: Usando fontes para uso. |
ForeColor |
DISP_STOCKPROP_FORECOLOR () |
Avalie acessível chamando GetForeColor. |
hWnd |
DISP_STOCKPROP_HWND () |
Valor acessível como m_hWnd. |
Texto |
DISP_STOCKPROP_TEXT () |
Valor acessível chamando InternalGetText. Esta propriedade é a mesma que Legenda, com exceção do nome da propriedade. |
ReadyState |
DISP_STOCKPROP_READYSTATE() |
Valor acessível como o m_lReadyState ou o GetReadyState |
Propriedades e notificação de estoque
A maioria das propriedades de estoque têm funções de notificação que podem ser substituídas. Por exemplo, sempre que a propriedade de BackColor for alterada, a função de OnBackColorChanged (uma função de membro da classe do controle) é chamada. A implementação padrão (em COleControl) chama InvalidateControl. Substituir essa função se você deseja executar ações adicionais em resposta a essa situação.
Propriedades de cores
Você pode usar ForeColor e as propriedades de estoque de BackColor , ou suas próprias propriedades de cores personalizadas, para pintar o controle. Para usar uma propriedade de cor, chame a função de membro de COleControl::TranslateColor . Os parâmetros dessa função é o valor da propriedade de cor e um identificador opcional da paleta. O valor de retorno é um valor de COLORREF que pode ser passado às funções de GDI, como SetTextColor e CreateSolidBrush.
Os valores de cor para ForeColor e as propriedades de estoque de BackColor são acessados GetForeColor ou chamando a função de GetBackColor , respectivamente.
O exemplo a seguir demonstra o uso dessas propriedades de duas cores para pintar um controle. Inicializa uma variável temporário de COLORREF e um objeto de CBrush com chamadas a TranslateColor: um usando a propriedade de ForeColor e outro que usa a propriedade de BackColor . Um objeto temporário de CBrush é usado para pintar o retângulo de controle, e a cor de texto é definida usando a propriedade de ForeColor .
CBrush bkBrush(TranslateColor(GetBackColor()));
COLORREF clrFore = TranslateColor(GetForeColor());
pdc->FillRect(rcBounds, &bkBrush);
pdc->SetTextColor(clrFore);
pdc->DrawText(InternalGetText(), -1, rcBounds, DT_SINGLELINE | DT_CENTER | DT_VCENTER);