Compartilhar via


Alocadores de classe e licenciamento

Para criar uma instância do controle OLE, um aplicativo de contêiner chama uma função membro da fábrica de classes do controle. Como o controle é um objeto OLE real, a fábrica de classes é responsável por criar instâncias do controle. Cada classe de controle OLE deve ter uma fábrica de classes.

Outro recurso importante dos controles OLE é a capacidade de impor uma licença. O ControlWizard permite incorporar o licenciamento durante a criação do projeto de controle. Para obter mais informações sobre licenciamento de controle, consulte o artigo Controles ActiveX: licenciando um controle ActiveX.

A tabela a seguir lista várias macros e funções usadas para declarar e implementar a fábrica de classes do controle e licenciar seu controle.

Alocadores de classe e licenciamento

Macro ou função Descrição
DECLARE_OLECREATE_EX Declara a fábrica de classes para um controle OLE ou uma página de propriedade.
IMPLEMENT_OLECREATE_EX Implementa a função GetClassID do controle e declara uma instância da fábrica de classes.
BEGIN_OLEFACTORY Inicia a declaração de quaisquer funções de licenciamento.
END_OLEFACTORY Encerra a declaração de quaisquer funções de licenciamento.
AfxVerifyLicFile Verifica se um controle é licenciado para uso em um computador específico.

DECLARE_OLECREATE_EX

Declara uma fábrica de classes e a função de membro GetClassID da classe de controle.

DECLARE_OLECREATE_EX(class_name)

Parâmetros

class_name
O nome da classe de controle.

Comentários

Use essa macro no arquivo de cabeçalho da classe de controle para um controle que não dá suporte ao licenciamento.

Observe que essa macro tem a mesma finalidade que o exemplo de código a seguir:

BEGIN_OLEFACTORY(CMyAxCtrl)
END_OLEFACTORY(CMyAxCtrl)

Requisitos

Cabeçalho afxctl.h

IMPLEMENT_OLECREATE_EX

Implementa a fábrica de classes do controle e a função de membro GetClassID da classe de controle.

IMPLEMENT_OLECREATE_EX(
   class_name,
    external_name,
    l,
    w1,
    w2,
    b1,
    b2,
    b3,
    b4,
    b5,
    b6,
    b7,
    b8)

Parâmetros

class_name
O nome da classe de página da propriedade de controle.

external_name
O nome do objeto exposto aos aplicativos.

l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8
Componentes de CLSID da classe. Para obter mais informações sobre esses parâmetros, consulte os Comentários para IMPLEMENT_OLECREATE.

Comentários

Essa macro deve aparecer no arquivo de implementação para qualquer classe de controle que use a macro DECLARE_OLECREATE_EX ou as macros BEGIN_OLEFACTORY e END_OLEFACTORY. O nome externo é o identificador do controle OLE exposto a outros aplicativos. Os contêineres usam esse nome para solicitar um objeto dessa classe de controle.

Requisitos

Cabeçalho afxctl.h

BEGIN_OLEFACTORY

Inicia a declaração da fábrica de classes no arquivo de cabeçalho da classe de controle.

BEGIN_OLEFACTORY(class_name)

Parâmetros

class_name
Especifica o nome da classe de controle cuja fábrica de classes é essa.

Comentários

As declarações de funções de licenciamento de fábrica de classes devem começar imediatamente após BEGIN_OLEFACTORY.

Requisitos

Cabeçalho afxctl.h

END_OLEFACTORY

Encerra a declaração da fábrica de classes do controle.

END_OLEFACTORY(class_name)

Parâmetros

class_name
O nome da classe de controle cuja fábrica de classes é essa.

Requisitos

Cabeçalho afxctl.h

AfxVerifyLicFile

Chame essa função para verificar se o arquivo de licença nomeado por pszLicFileName é válido para o controle OLE.

BOOL AFXAPI AfxVerifyLicFile(
    HINSTANCE  hInstance,
    LPCTSTR  pszLicFileName,
    LPOLESTR  pszLicFileContents,
    UINT cch = -1);

Parâmetros

hInstance
O identificador de instância da DLL associada ao controle licenciado.

pszLicFileName
Aponta para uma cadeia de caracteres terminada em nulo que contém o nome do arquivo de licença.

pszLicFileContents
Aponta para uma sequência de bytes que deve corresponder à sequência encontrada no início do arquivo de licença.

cch
Número de caracteres em pszLicFileContents.

Valor de retorno

Não zero se o arquivo de licença existir e começar com a sequência de caracteres em pszLicFileContents; caso contrário, 0.

Comentários

Se cch for -1, essa função usará:

_tcslen(pszLicFileContents);

Requisitos

Cabeçalho afxctl.h

Confira também

Macros e globais