Partilhar via


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

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

  1. Carregue o projeto do controle.

  2. No Modo de Exibição de Classe, expanda o nó de biblioteca do controle.

  3. 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.

  4. No menu de atalho, clique em Adicionar e, em seguida, em Adicionar Propriedade.

    Isso abre o Assistente para Adicionar Propriedade.

  5. Na caixa Nome da propriedade, clique em Legenda.

  6. 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 GetForeColorou 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 CBrushobjeto 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