共用方式為


Class Factory 和授權

若要建立 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 驗證控制項是否獲得在特定電腦上使用的授權。

DECLARE_OLECREATE_EX

宣告類別處理站和 GetClassID 控件類別的成員函式。

DECLARE_OLECREATE_EX(class_name)

參數

class_name
控件類別的名稱。

備註

針對不支持授權的控件,在控件類別頭檔中使用此巨集。

請注意,此巨集的作用與下列程式代碼範例相同:

BEGIN_OLEFACTORY(CMyAxCtrl)
END_OLEFACTORY(CMyAxCtrl)

需求

標頭 afxctl.h

IMPLEMENT_OLECREATE_EX

實作控件的類別處理站和 GetClassID 控件類別的成員函式。

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

參數

class_name
控件屬性頁類別的名稱。

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

lw1w2b1b2b3b4b5、、 b6b7b8
類別的 CLSID元件。 如需這些參數的詳細資訊,請參閱 的 IMPLEMENT_OLECREATE

備註

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

需求

標頭 afxctl.h

BEGIN_OLEFACTORY

在控件類別的標頭檔中,開始宣告您的類別處理站。

BEGIN_OLEFACTORY(class_name)

參數

class_name
指定類別處理站為這個的控件類別名稱。

備註

類別處理站授權函式的宣告應該會在 之後 BEGIN_OLEFACTORY立即開始。

需求

標頭 afxctl.h

END_OLEFACTORY

結束控件類別處理站的宣告。

END_OLEFACTORY(class_name)

參數

class_name
類別處理站為的控件類別名稱。

需求

標頭 afxctl.h

AfxVerifyLicFile

呼叫此函式,以確認 所 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);

需求

標頭 afxctl.h

另請參閱

巨集和全域