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。