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_MessageReflect
MessageReflect
環境屬性會指定容器是否會反映裝載控件的訊息。
STDMETHOD(get_MessageReflect)(VARIANT_BOOL* pbMessageReflect);
參數
pbMessageReflect
[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_MessageReflect
MessageReflect
環境屬性會指定容器是否會反映裝載控件的訊息。
STDMETHOD(put_MessageReflect)(VARIANT_BOOL bMessageReflect);
參數
bMessageReflect
[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 控制件。