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 類別