共用方式為


IAtlMemMgr 類別

這個類別代表記憶體管理員的介面。

語法

__interface __declspec(uuid("654F7EF5-CFDF-4df9-A450-6C6A13C622C0")) IAtlMemMgr

成員

方法

名稱 描述
分配 呼叫這個方法來配置記憶體區塊。
免費 呼叫此方法以釋放記憶體區塊。
GetSize 呼叫此方法以擷取配置記憶體區塊的大小。
重新配置 呼叫此方法以重新配置記憶體區塊。

備註

此介面是由 CComHeap、CCRTHeapCLocalHeapCGlobalHeap 或 CWin32Heap 實作。

注意

本機和全局堆積函式比其他記憶體管理功能慢,而且不提供許多功能。 因此,新的應用程式應該使用 堆積函式。 這些可在 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::FreeIAtlMemMgr::Reallocate 以釋放此方法配置的記憶體。

範例

如需範例,請參閱 IAtlMemMgr 概觀

IAtlMemMgr::Free

呼叫此方法以釋放記憶體區塊。

void Free(void* p) throw();

參數

p
此記憶體管理員先前所配置之記憶體的指標。

備註

使用這個方法來釋放 IAtlMemMgr::AllocateIAtlMemMgr::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::FreeIAtlMemMgr::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 控制件。

另請參閱

類別概觀