共用方式為


IAtlMemMgr 類別

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

語法

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

成員

方法

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

備註

此介面是由 CComHeap、CCRTHeap CLocalHeap CGlobalHeap 或 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::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 控制項。

另請參閱

類別概觀