共用方式為


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
公開給應用程式的物件名稱。

l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8
類別的 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

另請參閱

宏和全域