建議使用 Visual Studio 2017

Class Factory 和授權

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

若要建立 OLE 控制項的執行個體,容器應用程式會呼叫控制項之 Class Factory 的成員函式。 由於您的控制項是一個實際的 OLE 物件,Class Factory 會負責為您的控制項建立執行個體。 每個 OLE 控制項類別必須有一個 Class Factory。

OLE 控制項的另一個重要功能是其強制執行授權的能力。 ControlWizard 可讓您在專案建立控制項期間合併授權。 如需控制項授權的詳細資訊,請參閱文章ActiveX 控制項︰ 授權 ActiveX 控制項

下表列出用於幾個用於宣告和實作控制項的 Class Factory,以及控制項授權的巨集和函式。

Class Factory 和授權

DECLARE_OLECREATE_EX宣告 OLE 控制項或屬性頁面的 Class Factory。
IMPLEMENT_OLECREATE_EX實作控制項的 GetClassID 函式並宣告 Class Factory 的執行個體。
BEGIN_OLEFACTORY所有授權函式宣告的開頭。
END_OLEFACTORY所有授權函式宣告的結尾。
AfxVerifyLicFile驗證控制項是否獲得在特定電腦上使用的授權。

宣告 class factory 和GetClassID控制類別成員函式。

DECLARE_OLECREATE_EX(class_name)   

參數

class_name
控制項類別的名稱。

備註

使用這個巨集不支援授權控制項的控制項類別標頭檔中。

請注意,此巨集相同的目的為下列程式碼範例︰

   BEGIN_OLEFACTORY(CMyAxCtrl)
   END_OLEFACTORY(CMyAxCtrl)

實作控制項的 class factory 和GetClassID控制類別成員函式。

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

參數

class_name
控制項屬性頁類別名稱。

external_name
應用程式公開的物件名稱。

l、 w1、 w2、 b1、 b2、 b3、 b4、 b5、 b6、 b7、 b8
此類別的元件CLSID。 如需有關這些參數的詳細資訊,請參閱 < 備註 > 一如 [IMPLEMENT_OLECREATE]-brokenlink-(.../ Topic/not%20found.md#implement_olecreate。

備註

這個巨集必須出現在使用任何控制項類別的實作檔DECLARE_OLECREATE_EX巨集或BEGIN_OLEFACTORYEND_OLEFACTORY巨集。 外部名稱是公開給其他應用程式的 OLE 控制項的識別碼。 容器會使用此名稱來要求此控制類別的物件。

您 class factory,在您的控制項類別的標頭檔中宣告的開頭。

BEGIN_OLEFACTORY(class_name)  

參數

class_name
指定的類別處理站,這是控制項類別的名稱。

備註

Class factory 授權函式宣告應該開始之後立即BEGIN_OLEFACTORY

控制項的 class factory 宣告結尾。

END_OLEFACTORY(class_name)   

參數

class_name
這是其類別 factory 控制項類別的名稱。

呼叫此函式,以確認將授權檔名為的pszLicFileName適用於 OLE 控制項。

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

參數

hInstance
授權控制項相關聯的 DLL 的執行個體控制代碼。

pszLicFileName
指向以 null 結束的字元字串,包含授權檔名。

pszLicFileContents
必須符合授權檔案的開頭,請參閱序列的位元組序列點。

cch
中的字元數pszLicFileContents

傳回值

如果授權檔案存在,且開頭的字元順序為非零pszLicFileContents,否則為 0。

備註

如果cch是 â €"1,這個函式使用︰

         _tcslen(pszLicFileContents);

巨集和全域變數

顯示: