共用方式為


COleObjectFactory 類別

實作建立 OLE 物件 (例如伺服器、Automation 物件和文件) 的 OLE Class Factory。

語法

class COleObjectFactory : public CCmdTarget

成員

公用建構函式

名稱 描述
COleObjectFactory::COleObjectFactory 建構 COleObjectFactory 物件。

公用方法

名稱 描述
COleObjectFactory::GetClassID 傳回此 Factory 所建立物件的 OLE 類別識別碼。
COleObjectFactory::IsLicenseValid 判斷控制項的授權是否有效。
COleObjectFactory::IsRegistered 指出物件處理站是否向 OLE 系統 DLL 註冊。
COleObjectFactory::Register 向 OLE 系統 DLL 註冊此物件處理站。
COleObjectFactory::RegisterAll 向 OLE 系統 DLL 註冊所有應用程式的物件處理站。
COleObjectFactory::Revoke 撤銷此物件處理站向 OLE 系統 DLL 註冊。
COleObjectFactory::RevokeAll 撤銷應用程式的物件處理站向 OLE 系統 DLL 註冊。
COleObjectFactory::UnregisterAll 取消註冊應用程式的所有物件處理站。
COleObjectFactory::UpdateRegistry 向 OLE 系統登錄註冊此物件處理站。
COleObjectFactory::UpdateRegistryAll 向 OLE 系統登錄註冊所有應用程式的物件處理站。

受保護的方法

名稱 描述
COleObjectFactory::GetLicenseKey 從控制項的 DLL 要求唯一索引鍵。
COleObjectFactory::OnCreateObject 由架構呼叫,以建立此處理站類型的新物件。
COleObjectFactory::VerifyLicenseKey 確認控制項中內嵌的金鑰是否符合容器中內嵌的索引鍵。
COleObjectFactory::VerifyUserLicense 確認控制項已獲授權以供設計階段使用。

備註

類別 COleObjectFactory 具有成員函式來執行下列函式:

  • 管理物件的註冊。

  • 更新 OLE 系統暫存器,以及通知 OLE 物件正在執行且已準備好接收訊息的執行時間註冊。

  • 藉由限制在設計階段使用控制項給已授權開發人員,以及在執行時間將授權應用程式限制為授權應用程式,以強制執行授權。

  • 向 OLE 系統登錄註冊控制項物件處理站。

如需物件建立的詳細資訊,請參閱資料物件和資料來源(OLE)和 資料物件和資料來源:建立和解構 一文 如需註冊的詳細資訊,請參閱註冊 一文

繼承階層架構

CObject

CCmdTarget

COleObjectFactory

需求

標頭: afxdisp.h

COleObjectFactory::COleObjectFactory

COleObjectFactory建構 物件、將它初始化為未註冊的物件處理站,並將它新增至處理站清單。

COleObjectFactory(
    REFCLSID clsid,
    CRuntimeClass* pRuntimeClass,
    BOOL bMultiInstance,
    LPCTSTR lpszProgID);

COleObjectFactory(
    REFCLSID clsid,
    CRuntimeClass* pRuntimeClass,
    BOOL bMultiInstance,
    int nFlags,
    LPCTSTR lpszProgID);

參數

Clsid
這個物件 Factory 所代表之 OLE 類別識別碼的參考。

pRuntimeClass
此處理站可以建立之 C++ 物件的執行時間類別指標。

bMultiInstance
指出應用程式的單一實例是否可以支援多個具現化。 如果為 TRUE,則會針對每個要求啟動應用程式的多個實例來建立物件。

nFlags
包含下列一或多個旗標:

  • afxRegDefault 將執行緒模型設定為 ThreadingModel=Apartment。

  • afxRegInsertable 允許控制項出現在 OLE 物件的 [插入物件 ] 對話方塊中。

  • afxRegApartmentThreading 將登錄中的執行緒模型設定為 ThreadingModel=Apartment。

  • afxRegFreeThreading 將登錄中的執行緒模型設定為 ThreadingModel=Free。

    您可以結合這兩個旗標 afxRegApartmentThreadingafxRegFreeThreading 來設定 ThreadingModel=Both。 如需執行緒模型註冊的詳細資訊,請參閱 Windows SDK 中的 InprocServer32

lpszProgID
字串的指標,其中包含語言程式識別碼,例如 「Microsoft Excel」。

備註

不過,若要使用 物件,您必須註冊它。

如需詳細資訊,請參閱 Windows SDK 中的 CLSID 金鑰

COleObjectFactory::GetClassID

傳回這個處理站所表示之 OLE 類別識別碼的參考。

REFCLSID GetClassID() const;

傳回值

這個 Factory 所代表之 OLE 類別識別碼的參考。

備註

如需詳細資訊,請參閱 Windows SDK 中的 CLSID 金鑰

COleObjectFactory::GetLicenseKey

向控制項的 DLL 要求唯一授權金鑰,並將其儲存在 pbstrKey 所指向的 BSTR 中。

virtual BOOL GetLicenseKey(
    DWORD dwReserved,
    BSTR* pbstrKey);

參數

dwReserved
保留供未來使用。

pbstrKey
將儲存授權金鑰的 BSTR 指標。

傳回值

如果授權金鑰字串不是 Null,則為非零;否則為 0。

備註

此函式的預設實作會傳回 0,並將任何專案儲存在 BSTR 中。 如果您使用 MFC ActiveX ControlWizard 來建立專案,ControlWizard 會提供擷取控制項授權金鑰的覆寫。

COleObjectFactory::IsLicenseValid

判斷控制項的授權是否有效。

BOOL IsLicenseValid();

傳回值

如果成功,則為 TRUE;否則為 false。

COleObjectFactory::IsRegistered

如果處理站向 OLE 系統 DLL 註冊,則傳回非零值。

virtual BOOL IsRegistered() const;

傳回值

如果已註冊處理站,則為非零;否則為 0。

COleObjectFactory::OnCreateObject

由架構呼叫以建立新的 物件。

virtual CCmdTarget* OnCreateObject();

傳回值

所建立物件的指標。 如果失敗,它可能會擲回記憶體例外狀況。

備註

覆寫此函式,以從傳遞至建構函式的 CRuntimeClass 以外的專案建立物件。

COleObjectFactory::Register

向 OLE 系統 DLL 註冊此物件處理站。

virtual BOOL Register();

傳回值

如果成功註冊處理站,則為非零;否則為 0。

備註

啟動應用程式時,通常由 CWinApp::InitInstance 呼叫此函式。

COleObjectFactory::RegisterAll

向 OLE 系統 DLL 註冊所有應用程式的物件處理站。

static BOOL PASCAL RegisterAll();

傳回值

如果工廠成功註冊,則為非零;否則為 0。

備註

啟動應用程式時,通常由 CWinApp::InitInstance 呼叫此函式。

COleObjectFactory::Revoke

撤銷此物件處理站向 OLE 系統 DLL 註冊。

void Revoke();

備註

架構會在應用程式終止之前自動呼叫此函式。 如有必要,請從 CWinApp::ExitInstance 覆寫呼叫它。

COleObjectFactory::RevokeAll

撤銷所有應用程式物件處理站向 OLE 系統 DLL 註冊。

static void PASCAL RevokeAll();

備註

架構會在應用程式終止之前自動呼叫此函式。 如有必要,請從 CWinApp::ExitInstance 覆寫呼叫它。

COleObjectFactory::UnregisterAll

取消註冊應用程式的所有物件處理站。

static BOOL PASCAL UnregisterAll();

傳回值

如果成功,則為 TRUE,否則為 FALSE。

COleObjectFactory::UpdateRegistry

向 OLE 系統登錄註冊所有應用程式的物件處理站。

void UpdateRegistry(LPCTSTR lpszProgID = NULL);
virtual BOOL UpdateRegistry(BOOL bRegister);

參數

lpszProgID
包含人類可讀取程式識別碼的字串指標,例如 「Excel.Document.5」。

bRegister
判斷控制項類別的物件處理站是否要註冊。

備註

此函式的兩種形式簡短討論如下:

  • UpdateRegistry( lpszProgID 向 OLE 系統登錄註冊此物件處理站。 啟動應用程式時,通常由 CWinApp::InitInstance 呼叫此函式。

  • UpdateRegistry( bRegister 此形式的函式可覆寫。 如果 bRegister 為 TRUE,此函式會向系統登錄註冊控制項類別。 否則,它會取消註冊 類別。

    如果您使用 MFC ActiveX ControlWizard 來建立專案,ControlWizard 會提供此純虛擬函式的覆寫。

COleObjectFactory::UpdateRegistryAll

向 OLE 系統登錄註冊所有應用程式的物件處理站。

static BOOL PASCAL UpdateRegistryAll(BOOL bRegister = TRUE);

參數

bRegister
判斷控制項類別的物件處理站是否要註冊。

傳回值

如果工廠成功更新,則為非零;否則為 0。

備註

啟動應用程式時,通常由 CWinApp::InitInstance 呼叫此函式。

COleObjectFactory::VerifyLicenseKey

確認容器已獲得使用 OLE 控制項的授權。

virtual BOOL VerifyLicenseKey(BSTR bstrKey);

參數

bstrKey
BSTR,儲存容器的授權字串版本。

傳回值

如果執行時間授權有效,則為非零;否則為 0。

備註

預設版本會呼叫 GetLicenseKey 以取得控制項授權字串的複本,並將它與 bstrKey 中的 字串進行比較。 如果兩個字串相符,則函式會傳回非零值;否則會傳回 0。

您可以覆寫此函式以提供授權的自訂驗證。

函式 VerifyUserLicense 會驗證設計階段授權。

COleObjectFactory::VerifyUserLicense

驗證 OLE 控制項的設計階段授權。

virtual BOOL VerifyUserLicense();

傳回值

如果設計階段授權有效,則為非零;否則為 0。

另請參閱

CCmdTarget 類別
階層架構圖表
COleTemplateServer 類別