Class factory e licenze
Per creare un'istanza del controllo OLE, un'applicazione contenitore chiama una funzione membro della class factory del controllo. Poiché il controllo è un oggetto OLE effettivo, la class factory è responsabile della creazione di istanze del controllo. Ogni classe di controllo OLE deve avere una class factory.
Un'altra importante funzionalità dei controlli OLE è la possibilità di applicare una licenza. ControlWizard consente di incorporare le licenze durante la creazione del progetto di controllo. Per altre informazioni sulle licenze di controllo, vedere l'articolo Controlli ActiveX: Gestione delle licenze di un controllo ActiveX.
Nella tabella seguente sono elencate diverse macro e funzioni usate per dichiarare e implementare la class factory del controllo e per la licenza del controllo.
Class factory e licenze
Macro o funzione | Descrizione |
---|---|
DECLARE_OLECREATE_EX |
Dichiara la class factory per un controllo OLE o una pagina delle proprietà. |
IMPLEMENT_OLECREATE_EX |
Implementa la funzione del GetClassID controllo e dichiara un'istanza della class factory. |
BEGIN_OLEFACTORY |
Inizia la dichiarazione di tutte le funzioni di licenza. |
END_OLEFACTORY |
Termina la dichiarazione di tutte le funzioni di licenza. |
AfxVerifyLicFile |
Verifica se un controllo è concesso in licenza per l'uso in un computer specifico. |
DECLARE_OLECREATE_EX
Dichiara una class factory e la GetClassID
funzione membro della classe del controllo.
DECLARE_OLECREATE_EX(class_name)
Parametri
class_name
Nome della classe del controllo.
Osservazioni:
Utilizzare questa macro nel file di intestazione della classe di controllo per un controllo che non supporta le licenze.
Si noti che questa macro ha lo stesso scopo dell'esempio di codice seguente:
BEGIN_OLEFACTORY(CMyAxCtrl)
END_OLEFACTORY(CMyAxCtrl)
Requisiti
Intestazione afxctl.h
IMPLEMENT_OLECREATE_EX
Implementa la class factory del controllo e la GetClassID
funzione membro della classe di controllo.
IMPLEMENT_OLECREATE_EX(
class_name,
external_name,
l,
w1,
w2,
b1,
b2,
b3,
b4,
b5,
b6,
b7,
b8)
Parametri
class_name
Nome della classe della pagina delle proprietà del controllo.
external_name
Nome dell'oggetto esposto alle applicazioni.
l
, w1
, , b1
, b2
b3
, b5
b4
b6
, b7
w2
b8
Componenti della classe CLSID
. Per altre informazioni su questi parametri, vedere la sezione Osservazioni per IMPLEMENT_OLECREATE
.
Osservazioni:
Questa macro deve essere visualizzata nel file di implementazione per qualsiasi classe di controllo che utilizza la DECLARE_OLECREATE_EX
macro o le BEGIN_OLEFACTORY
macro e END_OLEFACTORY
. Il nome esterno è l'identificatore del controllo OLE esposto ad altre applicazioni. I contenitori usano questo nome per richiedere un oggetto di questa classe di controllo.
Requisiti
Intestazione afxctl.h
BEGIN_OLEFACTORY
Inizia la dichiarazione della class factory nel file di intestazione della classe di controllo.
BEGIN_OLEFACTORY(class_name)
Parametri
class_name
Specifica il nome della classe del controllo di cui si tratta la class factory.
Osservazioni:
Le dichiarazioni delle funzioni di licenza di Class Factory devono iniziare immediatamente dopo BEGIN_OLEFACTORY
.
Requisiti
Intestazione afxctl.h
END_OLEFACTORY
Termina la dichiarazione della class factory del controllo.
END_OLEFACTORY(class_name)
Parametri
class_name
Nome della classe del controllo di cui si tratta la class factory.
Requisiti
Intestazione afxctl.h
AfxVerifyLicFile
Chiamare questa funzione per verificare che il file di licenza denominato da pszLicFileName
sia valido per il controllo OLE.
BOOL AFXAPI AfxVerifyLicFile(
HINSTANCE hInstance,
LPCTSTR pszLicFileName,
LPOLESTR pszLicFileContents,
UINT cch = -1);
Parametri
hInstance
Handle dell'istanza della DLL associata al controllo concesso in licenza.
pszLicFileName
Punta a una stringa di caratteri con terminazione Null contenente il nome file della licenza.
pszLicFileContents
Punta a una sequenza di byte che deve corrispondere alla sequenza trovata all'inizio del file di licenza.
cch
Numero di caratteri in pszLicFileContents.
Valore restituito
Diverso da zero se il file di licenza esiste e inizia con la sequenza di caratteri in pszLicFileContents; in caso contrario, 0.
Osservazioni:
Se cch
è -1, questa funzione usa:
_tcslen(pszLicFileContents);
Requisiti
Intestazione afxctl.h