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