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