Controles ActiveX MFC: adicionando propriedades de estoque
As propriedades de estoque diferem das propriedades personalizadas, pois já são implementadas pela classe COleControl
. COleControl
contém funções de membro predefinidas que dão suporte a propriedades comuns ao controle. Algumas propriedades comuns incluem a legenda do controle e as cores de primeiro plano e cores da tela de fundo. Para obter informações sobre outras propriedades de estoque, consulte Propriedades de estoque com suporte pelo Assistente de adição de propriedade mais adiante neste artigo. As entradas do mapa de expedição para propriedades de estoque são sempre prefixadas por DISP_STOCKPROP.
Este artigo descreve como adicionar uma propriedade de estoque (neste caso, Legenda) a um controle ActiveX usando o Assistente de adição de propriedade e explica as modificações de código resultantes. Os tópicos incluem:
Usando o Assistente de adição de propriedade para adicionar uma propriedade de estoque
Alterações do Assistente de adição de propriedade nas propriedades de estoque
Propriedades de estoque com suporte para o Assistente de adição de propriedade
-
Observação
Os controles personalizados do Visual Basic normalmente têm propriedades como Parte superior, Esquerda, Largura, Altura, Alinhamento, Marcação, Nome, TabIndex, TabStop e Pai. No entanto, os contêineres de controle do ActiveX são responsáveis pela implementação dessas propriedades de controle e, portanto, os controles do ActiveX não dão suporte a essas propriedades.
Usando o Assistente de adição de propriedade para Adicionar uma propriedade de estoque
Adicionar propriedades de estoque requer menos código do que adicionar propriedades personalizadas porque o suporte para a propriedade é tratado automaticamente por COleControl
. O procedimento a seguir demonstra a adição da propriedade legenda de estoque a uma estrutura de controle do ActiveX e também pode ser usado para adicionar outras propriedades de estoque. Substitua o nome da propriedade de estoque selecionada com Legenda.
Para adicionar a propriedade de legenda de estoque usando o Assistente para Adicionar Propriedade
Carregue o projeto do controle.
No Modo de Exibição de Classe, expanda o nó de biblioteca do controle.
Clique com o botão direito do mouse no nó de interface do controle (o segundo nó do nó da biblioteca) para abrir o menu de atalho.
No menu de atalho, clique em Adicionar e, em seguida, em Adicionar Propriedade.
Isso abre o Assistente para Adicionar Propriedade.
Na caixa Nome da propriedade, clique em Legenda.
Clique em Concluir.
Alterações do Assistente de adição de propriedade às propriedades de estoque
Como COleControl
dá suporte a propriedades de estoque, o Assistente de adição de propriedade não altera a declaração de classe de nenhuma maneira; ele adiciona a propriedade ao mapa de expedição. O Assistente de adição de propriedade adiciona a linha a seguir ao mapa de expedição do controle, que está localizado no arquivo de implementação (.CPP):
DISP_STOCKPROP_CAPTION()
A linha a seguir é adicionada ao arquivo de descrição da interface do controle (.IDL):
[id(DISPID_CAPTION), helpstring("property Caption")] BSTR Caption;
Essa linha atribui à propriedade Legenda uma ID específica. Observe que a propriedade é associável e solicitará permissão do banco de dados antes de modificar o valor.
Isso disponibiliza a propriedade Legenda aos usuários do controle. Para usar o valor de uma propriedade de estoque, acesse uma variável de membro ou uma função de membro da classe base COleControl
. Para obter mais informações sobre essas variáveis de membro e funções de membro, consulte a próxima seção, Propriedades de estoque com suporte para Assistente de adição de propriedade.
Propriedades de estoque com suporte ao Assistente de adição de propriedade
A classe COleControl
fornece nove propriedades de estoque. Você pode adicionar as propriedades desejadas usando o Assistente de adição de propriedade.
Propriedade | Entrada do mapa de expedição | Como acessar o valor |
---|---|---|
Appearance |
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 . |
Caption |
DISP_STOCKPROP_CAPTION( ) | Valor acessível chamando InternalGetText . |
Enabled |
DISP_STOCKPROP_ENABLED( ) | Valor acessível como m_bEnabled . |
Font |
DISP_STOCKPROP_FONT( ) | Consulte o artigo Controles ActiveX do MFC: usar fontes para uso. |
ForeColor |
DISP_STOCKPROP_FORECOLOR( ) | Valor acessível chamando GetForeColor . |
hWnd |
DISP_STOCKPROP_HWND( ) | Valor acessível como m_hWnd . |
Text |
DISP_STOCKPROP_TEXT( ) | Valor acessível chamando InternalGetText . Essa propriedade é a mesma que Caption , exceto pelo nome da propriedade. |
ReadyState |
DISP_STOCKPROP_READYSTATE() | Valor acessível como m_lReadyState ou GetReadyState |
Propriedades e notificação de estoque
A maioria das propriedades de estoque tem funções de notificação que podem ser substituídas. Por exemplo, sempre que a propriedade BackColor
é alterada, a função OnBackColorChanged
(uma função membro da classe de controle) é chamada. A implementação padrão (em COleControl
) chama InvalidateControl
. Substitua essa função se você quiser executar ações adicionais em resposta a essa situação.
Propriedades de cor
Você pode usar as propriedades ForeColor
e BackColor
de estoque, ou suas próprias propriedades de cores personalizadas, ao colorir o controle. Para usar uma propriedade de cor, chame a função de membro COleControl::TranslateColor. Os parâmetros dessa função são o valor da propriedade de cores e um identificador de paleta opcional. O valor retornado é um valor COLORREF que pode ser passado para funções GDI, como SetTextColor
e CreateSolidBrush
.
Os valores de cor para as propriedades ForeColor
e BackColor
de estoque são acessados chamando a função GetForeColor
ou GetBackColor
função, respectivamente.
O exemplo a seguir demonstra o uso dessas duas propriedades de cores ao pintar um controle. Ele inicializa uma variável COLORREF temporária e um CBrush
objeto com chamadas para TranslateColor
: uma usando a ForeColor
propriedade e outra usando a BackColor
propriedade. Em seguida, um objeto temporário CBrush
é usado para pintar o retângulo do controle e a cor do texto é definida usando a propriedade 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);
Confira também
Controles ActiveX do MFC
Controles ActiveX do MFC: propriedades
Controles ActiveX do MFC: métodos
Classe COleControl