IAtlMemMgr 類別
這個類別代表記憶體管理員的介面。
語法
__interface __declspec(uuid("654F7EF5-CFDF-4df9-A450-6C6A13C622C0")) IAtlMemMgr
成員
方法
名稱 | 描述 |
---|---|
分配 | 呼叫這個方法來配置記憶體區塊。 |
免費 | 呼叫此方法以釋放記憶體區塊。 |
GetSize | 呼叫此方法以擷取配置記憶體區塊的大小。 |
重新配置 | 呼叫此方法以重新配置記憶體區塊。 |
備註
此介面是由 CComHeap、CCRTHeap 、 CLocalHeap 、 CGlobalHeap 或 CWin32Heap 實作。
範例
// Demonstrate IAtlMemMgr using the five possible
// memory function implementation classes.
HRESULT MemoryManagerDemonstration(IAtlMemMgr& MemoryManager) throw()
{
// The IAtlMemMgr interface guarantees not to throw exceptions
// so we can make the same guarantee for this function
// without adding exception handling code.
// A variable which will point to some allocated memory.
void* pMemory = NULL;
const size_t BytesInChunk = 1024;
// Allocate a chunk of memory
pMemory = MemoryManager.Allocate(BytesInChunk);
// Confirm the validity of the allocated memory
if (pMemory == NULL)
return E_OUTOFMEMORY;
// Confirm the size of the allocated memory
ATLASSERT(MemoryManager.GetSize(pMemory) == BytesInChunk);
// Increase the size of the allocated memory
pMemory = MemoryManager.Reallocate(pMemory, BytesInChunk * 2);
// Confirm the validity of the allocated memory
if (pMemory == NULL)
return E_OUTOFMEMORY;
// Confirm the size of the reallocated memory
ATLASSERT(MemoryManager.GetSize(pMemory) == BytesInChunk * 2);
// Free the allocated memory
MemoryManager.Free(pMemory);
return S_OK;
}
int DoMemoryManagerDemonstration()
{
CComHeap heapCom;
CCRTHeap heapCrt;
CLocalHeap heapLocal;
CGlobalHeap heapGlobal;
// It is necessary to provide extra information
// to the constructor when using CWin32Heap
CWin32Heap heapWin32(NULL, 4096);
ATLASSERT(S_OK==MemoryManagerDemonstration(heapCom));
ATLASSERT(S_OK==MemoryManagerDemonstration(heapCrt));
ATLASSERT(S_OK==MemoryManagerDemonstration(heapLocal));
ATLASSERT(S_OK==MemoryManagerDemonstration(heapGlobal));
ATLASSERT(S_OK==MemoryManagerDemonstration(heapWin32));
return 0;
}
需求
標頭: atlmem.h
IAtlMemMgr::Allocate
呼叫這個方法來配置記憶體區塊。
void* Allocate(size_t nBytes) throw();
參數
nBytes
在新記憶體區塊中要求的位元組數目。
傳回值
傳回新配置記憶體區塊開頭的指標。
備註
呼叫 IAtlMemMgr::Free 或 IAtlMemMgr::Reallocate 以釋放此方法配置的記憶體。
範例
如需範例,請參閱 IAtlMemMgr 概觀 。
IAtlMemMgr::Free
呼叫此方法以釋放記憶體區塊。
void Free(void* p) throw();
參數
p
此記憶體管理員先前所配置之記憶體的指標。
備註
使用這個方法來釋放 IAtlMemMgr::Allocate 或 IAtlMemMgr::Reallocate 取得 的記憶體。
範例
如需範例,請參閱 IAtlMemMgr 概觀 。
IAtlMemMgr::GetSize
呼叫此方法以擷取配置記憶體區塊的大小。
size_t GetSize(void* p) throw();
參數
p
此記憶體管理員先前所配置之記憶體的指標。
傳回值
以位元組為單位傳回記憶體區塊的大小。
範例
如需範例,請參閱 IAtlMemMgr 概觀 。
IAtlMemMgr::Reallocate
呼叫這個方法來重新配置此記憶體管理員所配置的記憶體。
void* Reallocate(void* p, size_t nBytes) throw();
參數
p
此記憶體管理員先前所配置之記憶體的指標。
nBytes
在新記憶體區塊中要求的位元組數目。
傳回值
傳回新配置記憶體區塊開頭的指標。
備註
呼叫 IAtlMemMgr::Free 或 IAtlMemMgr::Reallocate 以釋放此方法配置的記憶體。
從概念上講,這個方法會釋放現有的記憶體,並配置新的記憶體區塊。 事實上,現有的記憶體可能會擴充或重複使用。
範例
如需範例,請參閱 IAtlMemMgr 概觀 。
IAxWinAmbientDispatch::get_AllowCoNtextMenu
屬性 AllowContextMenu
會指定是否允許主控控制項顯示自己的操作功能表。
STDMETHOD(get_AllowContextMenu)(VARIANT_BOOL* pbAllowContextMenu);
參數
pbAllowCoNtextMenu
[out]要接收此屬性目前值的變數位址。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用 VARIANT_TRUE 做為此屬性的預設值。
IAxWinAmbientDispatch::get_AllowShowUI
屬性 AllowShowUI
會指定是否允許主控控制項顯示自己的使用者介面。
STDMETHOD(get_AllowShowUI)(VARIANT_BOOL* pbAllowShowUI);
參數
pbAllowShowUI
[out]要接收此屬性目前值的變數位址。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用 VARIANT_FALSE 做為此屬性的預設值。
IAxWinAmbientDispatch::get_AllowWindowlessActivation
屬性 AllowWindowlessActivation
會指定容器是否允許無視窗啟用。
STDMETHOD(get_AllowWindowlessActivation)(VARIANT_BOOL* pbAllowWindowless);
參數
pbAllowWindowless
[out]要接收此屬性目前值的變數位址。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用 VARIANT_TRUE 做為此屬性的預設值。
IAxWinAmbientDispatch::get_BackColor
屬性 BackColor
會指定容器的環境背景色彩。
STDMETHOD(get_BackColor)(OLE_COLOR* pclrBackground);
參數
pclrBackground
[out]要接收此屬性目前值的變數位址。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用 COLOR_BTNFACE 或 COLOR_WINDOW 做為此屬性的預設值(視主機視窗的父代是否為對話方塊而定)。
IAxWinAmbientDispatch::get_DisplayAsDefault
DisplayAsDefault
是環境屬性,可讓控制項找出其是否為預設控制項。
STDMETHOD(get_DisplayAsDefault)(VARIANT_BOOL* pbDisplayAsDefault);
參數
pbDisplayAsDefault
[out]要接收此屬性目前值的變數位址。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用 VARIANT_FALSE 做為此屬性的預設值。
IAxWinAmbientDispatch::get_DocHostDoubleClickFlags
屬性 DocHostDoubleClickFlags
會指定應該在回應按兩下時進行的作業。
STDMETHOD(get_DocHostDoubleClickFlags)(DWORD* pdwDocHostDoubleClickFlags);
參數
pdwDocHostDoubleClickFlags
[out]要接收此屬性目前值的變數位址。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用 DOCHOSTUIDBLCLK_DEFAULT 做為此屬性的預設值。
IAxWinAmbientDispatch::get_DocHostFlags
屬性 DocHostFlags
會指定主物件的使用者介面功能。
STDMETHOD(get_DocHostFlags)(DWORD* pdwDocHostFlags);
參數
pdwDocHostFlags
[out]要接收此屬性目前值的變數位址。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用 DOCHOSTUIFLAG_NO3DBORDER 做為此屬性的預設值。
IAxWinAmbientDispatch::get_Font
屬性 Font
會指定容器的環境字型。
STDMETHOD(get_Font)(IFontDisp** pFont);
參數
pFont
[out]介面指標的位址 IFontDisp
,用來接收這個屬性的目前值。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用預設 GUI 字型或系統字型做為此屬性的預設值。
IAxWinAmbientDispatch::get_ForeColor
屬性 ForeColor
會指定容器的環境前景色彩。
STDMETHOD(get_ForeColor)(OLE_COLOR* pclrForeground);
參數
pclrForeground
[out]要接收此屬性目前值的變數位址。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用系統視窗文字色彩做為此屬性的預設值。
IAxWinAmbientDispatch::get_LocaleID
屬性 LocaleID
會指定容器的環境地區設定識別碼。
STDMETHOD(get_LocaleID)(LCID* plcidLocaleID);
參數
plcidLocaleID
[out]要接收此屬性目前值的變數位址。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用使用者的預設地區設定做為此屬性的預設值。
透過此方法,您可以探索環境 LocalID,也就是控制項所使用的程式 LocaleID。 一旦知道 LocaleID,您就可以呼叫程式碼,從資源檔或附屬 DLL 載入地區設定特定的標題、錯誤訊息正文等等。
IAxWinAmbientDispatch::get_Message反思
MessageReflect
環境屬性會指定容器是否會反映裝載控制項的訊息。
STDMETHOD(get_MessageReflect)(VARIANT_BOOL* pbMessageReflect);
參數
pbMessage反思
[out]要接收此屬性目前值的變數位址。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用 VARIANT_TRUE 做為此屬性的預設值。
IAxWinAmbientDispatch::get_OptionKeyPath
屬性 OptionKeyPath
會指定使用者設定的登錄機碼路徑。
STDMETHOD(get_OptionKeyPath)(BSTR* pbstrOptionKeyPath);
參數
pbstrOptionKeyPath
[out]要接收此屬性目前值的變數位址。
傳回值
標準 HRESULT 值。
IAxWinAmbientDispatch::get_ShowGrabHandles
ShowGrabHandles
環境屬性可讓控制項找出它是否應該使用抓取控點繪製本身。
STDMETHOD(get_ShowGrabHandles)(VARIANT_BOOL* pbShowGrabHandles);
參數
pbShowGrabHandles
[out]要接收此屬性目前值的變數位址。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作一律會傳回VARIANT_FALSE做為此屬性的值。
IAxWinAmbientDispatch::get_ShowHatching
ShowHatching
環境屬性可讓控制項找出它是否應該繪製本身的影線。
STDMETHOD(get_ShowHatching)(VARIANT_BOOL* pbShowHatching);
參數
pbShowHatching
[out]要接收此屬性目前值的變數位址。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作一律會傳回VARIANT_FALSE做為此屬性的值。
IAxWinAmbientDispatch::get_UserMode
屬性 UserMode
會指定容器的環境使用者模式。
STDMETHOD(get_UserMode)(VARIANT_BOOL* pbUserMode);
參數
pbUserMode
[out]要接收此屬性目前值的變數位址。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用 VARIANT_TRUE 做為此屬性的預設值。
IAxWinAmbientDispatch::p ut_AllowCoNtextMenu
屬性 AllowContextMenu
會指定是否允許主控控制項顯示自己的操作功能表。
STDMETHOD(put_AllowContextMenu)(VARIANT_BOOL bAllowContextMenu);
參數
bAllowCoNtextMenu
[in]這個屬性的新值。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用 VARIANT_TRUE 做為此屬性的預設值。
IAxWinAmbientDispatch::p ut_AllowShowUI
屬性 AllowShowUI
會指定是否允許主控控制項顯示自己的使用者介面。
STDMETHOD(put_AllowShowUI)(VARIANT_BOOL bAllowShowUI);
參數
bAllowShowUI
[in]這個屬性的新值。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用 VARIANT_FALSE 做為此屬性的預設值。
IAxWinAmbientDispatch::p ut_AllowWindowlessActivation
屬性 AllowWindowlessActivation
會指定容器是否允許無視窗啟用。
STDMETHOD(put_AllowWindowlessActivation)(VARIANT_BOOL bAllowWindowless);
參數
bAllowWindowless
[in]這個屬性的新值。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用 VARIANT_TRUE 做為此屬性的預設值。
IAxWinAmbientDispatch::p ut_BackColor
屬性 BackColor
會指定容器的環境背景色彩。
STDMETHOD(put_BackColor)(OLE_COLOR clrBackground);
參數
clrBackground
[in]這個屬性的新值。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用 COLOR_BTNFACE 或 COLOR_WINDOW 做為此屬性的預設值(視主機視窗的父代是否為對話方塊而定)。
IAxWinAmbientDispatch::p ut_DisplayAsDefault
DisplayAsDefault
是環境屬性,可讓控制項找出其是否為預設控制項。
STDMETHOD(put_DisplayAsDefault)(VARIANT_BOOL bDisplayAsDefault);
參數
bDisplayAsDefault
[in]這個屬性的新值。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用 VARIANT_FALSE 做為此屬性的預設值。
IAxWinAmbientDispatch::p ut_DocHostDoubleClickFlags
屬性 DocHostDoubleClickFlags
會指定應該在回應按兩下時進行的作業。
STDMETHOD(put_DocHostDoubleClickFlags)(DWORD dwDocHostDoubleClickFlags);
參數
dwDocHostDoubleClickFlags
[in]這個屬性的新值。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用 DOCHOSTUIDBLCLK_DEFAULT 做為此屬性的預設值。
IAxWinAmbientDispatch::p ut_DocHostFlags
屬性 DocHostFlags
會指定主物件的使用者介面功能。
STDMETHOD(put_DocHostFlags)(DWORD dwDocHostFlags);
參數
dwDocHostFlags
[in]這個屬性的新值。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用 DOCHOSTUIFLAG_NO3DBORDER 做為此屬性的預設值。
IAxWinAmbientDispatch::p ut_Font
屬性 Font
會指定容器的環境字型。
STDMETHOD(put_Font)(IFontDisp* pFont);
參數
pFont
[in]這個屬性的新值。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用預設 GUI 字型或系統字型做為此屬性的預設值。
IAxWinAmbientDispatch::p ut_ForeColor
屬性 ForeColor
會指定容器的環境前景色彩。
STDMETHOD(put_ForeColor)(OLE_COLOR clrForeground);
參數
clrForeground
[in]這個屬性的新值。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用系統視窗文字色彩做為此屬性的預設值。
IAxWinAmbientDispatch::p ut_LocaleID
屬性 LocaleID
會指定容器的環境地區設定識別碼。
STDMETHOD(put_LocaleID)(LCID lcidLocaleID);
參數
lcidLocaleID
[in]這個屬性的新值。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用使用者的預設地區設定做為此屬性的預設值。
IAxWinAmbientDispatch::p ut_Message反思
MessageReflect
環境屬性會指定容器是否會反映裝載控制項的訊息。
STDMETHOD(put_MessageReflect)(VARIANT_BOOL bMessageReflect);
參數
bMessage反思
[in]這個屬性的新值。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用 VARIANT_TRUE 做為此屬性的預設值。
IAxWinAmbientDispatch::p ut_OptionKeyPath
屬性 OptionKeyPath
會指定使用者設定的登錄機碼路徑。
STDMETHOD(put_OptionKeyPath)(BSTR bstrOptionKeyPath);
參數
bstrOptionKeyPath
[in]這個屬性的新值。
傳回值
標準 HRESULT 值。
IAxWinAmbientDispatch::p ut_UserMode
屬性 UserMode
會指定容器的環境使用者模式。
STDMETHOD(put_UserMode)(VARIANT_BOOL bUserMode);
參數
bUserMode
[in]這個屬性的新值。
傳回值
標準 HRESULT 值。
備註
ATL 主機物件實作會使用 VARIANT_TRUE 做為此屬性的預設值。
IAxWinAmbientDispatchEx::SetAmbientDispatch
呼叫此方法以補充預設環境屬性介面與使用者定義介面。
virtual HRESULT STDMETHODCALLTYPE SetAmbientDispatch(IDispatch* pDispatch) = 0;
參數
pDispatch
新介面的指標。
傳回值
傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。
備註
當使用新介面的指標呼叫 時 SetAmbientDispatch
,這個新介面將用來叫用託管控制項要求的任何屬性或方法,如果 IAxWinAmbientDispatch 尚未提供 這些屬性。
IAxWinHostWindow::AttachControl
使用 hWnd 所 識別的視窗,將現有的 (先前初始化) 控制項附加至主物件。
STDMETHOD(AttachControl)(IUnknown* pUnkControl, HWND hWnd);
參數
pUnkControl
[in]要附加至主物件的控制項介面指標 IUnknown
。
hWnd
[in]要用於裝載之視窗的控制碼。
傳回值
標準 HRESULT 值。
IAxWinHostWindow::CreateControl
建立控制項、初始化控制項,並將它裝載于 hWnd 所 識別的視窗中。
STDMETHOD(CreateControl)(
LPCOLESTR lpTricsData,
HWND hWnd,
IStream* pStream);
參數
lpTricsData
[in]識別要建立之控制項的字串。 可以是 CLSID (必須包含大括弧)、ProgID、URL 或原始 HTML(前面加上 MSHTML: )。
hWnd
[in]要用於裝載之視窗的控制碼。
pStream
[in]資料流程的介面指標,包含 控制項的初始化資料。 可以是 Null。
傳回值
標準 HRESULT 值。
備註
此視窗將會由公開此介面的主機物件子類別化,以便將訊息反映至控制項,而其他容器功能將會運作。
呼叫此方法相當於呼叫 IAxWinHostWindow::CreateControlEx 。
若要建立授權的 ActiveX 控制項,請參閱 IAxWinHostWindowLic::CreateControlLic 。
IAxWinHostWindow::CreateControlEx
建立 ActiveX 控制項、初始化它,並在指定的視窗中裝載它,類似于 IAxWinHostWindow::CreateControl 。
STDMETHOD(CreateControlEx)(
LPCOLESTR lpszTricsData,
HWND hWnd,
IStream* pStream,
IUnknown** ppUnk,
REFIID riidAdvise,
IUnknown* punkAdvise);
參數
lpTricsData
[in]識別要建立之控制項的字串。 可以是 CLSID (必須包含大括弧)、ProgID、URL 或原始 HTML(前面加上 MSHTML: )。
hWnd
[in]要用於裝載之視窗的控制碼。
pStream
[in]資料流程的介面指標,包含 控制項的初始化資料。 可以是 Null。
ppUnk
[out]將接收 IUnknown
所建立控制項介面之指標的位址。 可以是 Null。
riidAdvise
[in]自主物件上傳出介面的介面識別碼。 可以是IID_Null。
punkAdvise
[in]要連接到 所指定 iidSink
之自主物件之連接點之接收物件的介面指標 IUnknown
。
傳回值
標準 HRESULT 值。
備註
CreateControl
不同于 方法, CreateControlEx
也可讓您接收新建立控制項的介面指標,並設定事件接收接收控制項所引發的事件。
若要建立授權的 ActiveX 控制項,請參閱 IAxWinHostWindowLic::CreateControlLicEx 。
IAxWinHostWindow::QueryControl
傳回裝載控制項所提供的指定介面指標。
STDMETHOD(QueryControl)(REFIID riid, void** ppvObject);
參數
riid
[in]所要求控制項上的介面識別碼。
ppvObject
[out]將接收所建立控制項之指定介面的指標位址。
傳回值
標準 HRESULT 值。
IAxWinHostWindow::SetExternalDispatch
設定外部 dispinterface,可透過 IDocHostUIHandlerDispatch::GetExternal 方法包含控制項。
STDMETHOD(SetExternalDispatch)(IDispatch* pDisp);
參數
pDisp
[in]介面的 IDispatch
指標。
傳回值
標準 HRESULT 值。
IAxWinHostWindow::SetExternalUIHandler
呼叫此函式來設定物件的外部 IDocHostUIHandlerDispatch 介面 CAxWindow
。
STDMETHOD(SetExternalUIHandler)(IDocHostUIHandlerDispatch* pDisp);
參數
pDisp
[in]介面的 IDocHostUIHandlerDispatch
指標。
傳回值
標準 HRESULT 值。
備註
此函式是由查詢主機網站 IDocHostUIHandlerDispatch
之介面的控制項(例如網頁瀏覽器控制項)使用。
IAxWinHostWindowLic::CreateControlLic
建立授權控制項、初始化它,並在 所 hWnd
識別的視窗中裝載它。
STDMETHOD(CreateControlLic)(
LPCOLESTR lpTricsData,
HWND hWnd,
IStream* pStream,
BSTR bstrLic);
參數
bstrLic
[in]包含控制項授權金鑰的 BSTR。
備註
如需其餘參數和傳回值的描述,請參閱 IAxWinHostWindow::CreateControl 。
呼叫此方法相當於呼叫 IAxWinHostWindowLic::CreateControlLicEx
範例
如需使用 IAxWinHostWindowLic::CreateControlLic
的範例,請參閱 使用 ATL AXHost 裝載 ActiveX 控制項。
IAxWinHostWindowLic::CreateControlLicEx
建立授權的 ActiveX 控制項、初始化它,並在指定的視窗中裝載它,類似于 IAxWinHostWindow::CreateControl 。
STDMETHOD(CreateControlLicEx)(
LPCOLESTR lpszTricsData,
HWND hWnd,
IStream* pStream,
IUnknown** ppUnk,
REFIID riidAdvise,
IUnknown* punkAdvise,
BSTR bstrLic);
參數
bstrLic
[in]包含控制項授權金鑰的 BSTR。
備註
如需其餘參數和傳回值的描述,請參閱 IAxWinHostWindow::CreateControlEx 。
範例
如需使用 IAxWinHostWindowLic::CreateControlLicEx
的範例,請參閱 使用 ATL AXHost 裝載 ActiveX 控制項。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應