Partilhar via


Controles ActiveX MFC: acessando propriedades ambiente

Este artigo discute como um controle ActiveX pode acessar as propriedades ambientais de seu contêiner de controle.

Um controle pode obter informações sobre seu contêiner acessando as propriedades de ambiente do contêiner. Essas propriedades expõem características visuais, como a cor da tela de fundo do contêiner, a fonte atual usada pelo contêiner e características operacionais, por exemplo, se o contêiner está no modo de usuário ou no modo de designer. Um controle pode usar propriedades de ambiente para personalizar a aparência e o comportamento para o contêiner específico no qual ele é inserido. No entanto, um controle nunca deve presumir que seu contêiner dará suporte a qualquer propriedade ambiente específica. Na verdade, alguns contêineres podem não dar suporte a nenhuma propriedade de ambiente. Na ausência de uma propriedade ambiente, um controle deve presumir um valor padrão razoável.

Para acessar uma propriedade de ambiente, faça uma chamada para COleControl::GetAmbientProperty. Essa função espera a ID de expedição para a propriedade de ambiente como o primeiro parâmetro (o arquivo OLECTL. H define IDs de expedição para o conjunto padrão de propriedades de ambiente).

Os parâmetros da função GetAmbientProperty são a ID de expedição, uma marca variante que indica o tipo de propriedade esperado e um ponteiro para a memória em que o valor deve ser retornado. O tipo de dados aos quais esse ponteiro se refere varia conforme a marca variante. A função retornará TRUE se o contêiner der suporte à propriedade, caso contrário, retornará FALSE.

O seguinte exemplo de código obtém o valor da propriedade de ambiente chamada "UserMode". Se a propriedade não for compatível com o contêiner, um valor padrão de TRUE será presumido:

BOOL bUserMode;
if (!GetAmbientProperty(DISPID_AMBIENT_USERMODE, VT_BOOL, &bUserMode))
bUserMode = TRUE;

Para sua conveniência, COleControl fornece funções auxiliares que acessam muitas das propriedades de ambiente comumente usadas e retornam padrões apropriados quando as propriedades não estão disponíveis. Essas funções auxiliares são as seguintes:

Se o valor de uma propriedade ambiente for alterado (por meio de alguma ação do contêiner), a função OnAmbientPropertyChanged de membro do controle será chamada. Substitua essa função de membro para lidar com essa notificação. O parâmetro para OnAmbientPropertyChanged é a ID de expedição da propriedade ambiente afetada. O valor dessa ID de expedição pode ser DISPID_UNKNOWN, o que indica que uma ou mais propriedades ambientais foram alteradas, mas as informações sobre quais propriedades foram afetadas não estão disponíveis.

Confira também

Controles ActiveX do MFC