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)和 資料物件和資料來源:建立和解構 一文 。 如需註冊的詳細資訊,請參閱註冊 一文 。
繼承階層架構
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。您可以結合這兩個旗標
afxRegApartmentThreading
和afxRegFreeThreading
來設定 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。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應