Os controles ActiveX MFC: Adicionar propriedades de ações
Propriedades ações diferem das propriedades personalizadas que já são implementados pela classe COleControl. COleControl contém funções de membro predefinidas que oferecem suporte a propriedades comuns para o controle. Algumas propriedades comuns incluem a legenda do controle e as cores de primeiro plano e plano de fundo.Para obter informações sobre outras propriedades de ações, consulte Propriedades com suporte de ações a propriedade de Assistente neste artigo.As entradas de MAP de despacho para estoque propriedades sempre são o prefixo DISP_STOCKPROP.
Este artigo descreve como adicionar uma propriedade ações (neste caso, a legenda) a um controle ActiveX usando o Assistente para adicionar propriedades e explica as modificações de código resultante.Os tópicos incluem:
Usando o Assistente para adicionar propriedades para adicionar uma propriedade de ações
Adicionar propriedade de assistente alterações para propriedades de ações
Propriedades de ações suportadas pelo Assistente para adicionar propriedade
Propriedades de ações e notificação
Propriedades de cor
Observação: Controles personalizados do Visual Basic geralmente têm propriedades sistema autônomo Top, Left, largura, altura, alinhar, marca, nome, TabIndex, TabStop e pai.Recipientes de controle ActiveX, no entanto, são responsáveis por implementar esses propert controle propriedades e, portanto, os controles ActiveX não devem suporte a essas propriedades.
Usando a propriedade de Assistente para adicionar uma propriedade de ações
Adicionando propriedades de ações requer menos código que adicionando propriedades personalizadas porque o suporte para a propriedade é manipulada automaticamente pela COleControl. O procedimento a seguir demonstra a adicionar o propriedade legenda de estoque a uma estrutura de controle ActiveX e também pode ser usado para adicionar outras propriedades de ações.Substitua o nome de propriedade das ações selecionadas para legenda.
Para adicionar a propriedade legenda ações usando o Assistente para adicionar propriedade
Carregar projeto do controle.
No modo de exibição de classe, expandir o nó de biblioteca do seu controle.
clicar com o botão direito do mouse no nó de interface para o seu controle (o segundo nó do nó biblioteca) para em em aberto o menu de atalho.
No menu de atalho, clicar Adicionar e, em seguida, clicar Adicionar propriedade.
Isso abre o Adicionar Assistente de propriedade.
No Nome da propriedade clicarLegenda.
Clique em Finish.
Adicionar propriedade Changes assistente para propriedades de ações
Porque COleControl Propriedades de ações oferece suporte, o Assistente para adicionar propriedade não altera a declaração da classe de forma alguma; adiciona a propriedade para o MAP de despacho. O Assistente para adicionar propriedade adiciona o MAP de despacho do controle, localizada no arquivo de implementação (.CPP) a seguinte linha:
DISP_STOCKPROP_CAPTION()
A seguinte linha é adicionada ao arquivo de descrição (.idl) de interface do controle:
[id(DISPID_CAPTION), helpstring("property Caption")] BSTR Caption;
Esta linha atribui a propriedade legenda uma ID específica.Observe que a propriedade é acoplável e solicitar permissão do banco de dados antes de modificar o valor.
Isso torna a propriedade legenda disponível para usuários do seu controle.Para usar o valor de uma propriedade de ações, acesso uma variável de membro ou a função de membro do COleControl classe base. Para obter mais informações sobre essas variáveis de membros e funções de membro, consulte a próxima seção, ações propriedades suportados pelo Assistente para adicionar propriedade.
Propriedades com suporte de ações a propriedade de Assistente
The COleControl classe oferece nove propriedades de ações. Você pode adicionar as propriedades que você deseja usando o Assistente para adicionar propriedade.
Propriedade |
Entrada de MAP de despacho |
Como acessar o valor |
---|---|---|
Aparência |
(DISP_STOCKPROP_APPEARANCE) |
Valor acessível sistema autônomo m_sAppearance. |
BackColor |
(DISP_STOCKPROP_BACKCOLOR) |
Valor acessível chamando GetBackColor. |
BorderStyle |
(DISP_STOCKPROP_BORDERSTYLE) |
Valor acessível sistema autônomo m_sBorderStyle. |
Legenda |
(DISP_STOCKPROP_CAPTION) |
Valor acessível chamando InternalGetText. |
Enabled |
(DISP_STOCKPROP_ENABLED) |
Valor acessível sistema autônomo m_bEnabled. |
Fonte |
(DISP_STOCKPROP_FONT) |
Consulte o artigo Os controles ActiveX MFC: Usando fontes para uso. |
ForeColor |
(DISP_STOCKPROP_FORECOLOR) |
Valor acessível chamando GetForeColor. |
hWnd |
(DISP_STOCKPROP_HWND) |
Valor acessível sistema autônomo m_hWnd. |
Texto |
(DISP_STOCKPROP_TEXT) |
Valor acessível chamando InternalGetText. Esta propriedade é igual a Legenda, exceto para o nome da propriedade. |
ReadyState |
DISP_STOCKPROP_READYSTATE() |
Valor acessível sistema autônomo m_lReadyState ou GetReadyState |
Propriedades e a notificação de ações
A maioria das propriedades de ações tem funções de notificação que podem ser substituídas.Por exemplo, sempre que o BackColor propriedade for alterada, o OnBackColorChanged função (uma função de membro da classe de controle) é chamada. A implementação padrão (em COleControl) chamadas InvalidateControl. Substitua esta função para executar ações adicionais em resposta a essa situação.
Propriedades de cor
Você pode usar o estoque ForeColor e BackColor Propriedades da ou sua própria cor personalizada, ao pintar o controle. Para usar uma propriedade de cor, chame o COleControl::TranslateColorfunção de membro .Os parâmetros desta função são o valor da propriedade color e uma alça de paleta opcional.O valor retornado é um COLORREF valor de que pode ser passado para funções GDI, sistema autônomo SetTextColor e CreateSolidBrush.
Os valores de cor para o estoque ForeColor e BackColor propriedades são acessadas chamando tanto a GetForeColor ou o GetBackColor funcione, respectivamente.
O exemplo a seguir demonstra usando essas propriedades de duas cores ao pintar um controle.Ele inicializa um temporária COLORREF variável e um CBrush objeto com chamadas para TranslateColor: um usando o ForeColor propriedade e Outros usar o BackColor propriedade. Um temporária CBrush objeto, em seguida, é usado para pintar o retângulo de controle e a cor do texto é definida com o ForeColor propriedade.
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);
Consulte também
Conceitos
Os controles ActiveX MFC: Propriedades
Os controles ActiveX MFC: Métodos