共用方式為


CComControlBase 類別

這個類別提供建立和管理ATL控件的方法。

重要

這個類別及其成員不能用於在 Windows 執行階段 中執行的應用程式。

語法

class ATL_NO_VTABLE CComControlBase

成員

公用 Typedefs

名稱 描述
CComControlBase::AppearanceType 如果您的 m_nAppearance 股票屬性不是 類型 short,請覆寫 。

公用建構函式

名稱 描述
CComControlBase::CComControlBase 建構函式。
CComControlBase::~CComControlBase 解構函式。

公用方法

名稱 描述
CComControlBase::ControlQueryInterface 擷取所要求介面的指標。
CComControlBase::D oesVerbActivate 檢查 控件IOleObjectImpl::DoVerb所使用的 iVerb 參數是否啟動控制件的使用者介面 (iVerb 等於 OLEIVERB_UIACTIVATE),定義當使用者按兩下控制項時所採取的動作(iVerb 等於 OLEIVERB_PRIMARY)、顯示控件 (iVerb 等於 OLEIVERB_SHOW),或啟動控件 (iVerb 等於 OLEIVERB_INPLACEACTIVATE)。
CComControlBase::D oesVerbUIActivate 檢查 所使用的 IOleObjectImpl::DoVerb iVerb 參數是否讓控件的使用者介面啟動並傳回 TRUE。
CComControlBase::D oVerbProperties 顯示控件的屬性頁。
CComControlBase::FireViewChange 呼叫這個方法,告知容器重新繪製控件,或通知已註冊的建議接收控件的檢視已變更。
CComControlBase::GetAmbientAppearance 擷取DISPID_AMBIENT_APPEARANCE,控件的目前外觀設定:0 表示平面,3D 為 1。
CComControlBase::GetAmbientAutoClip 擷取DISPID_AMBIENT_AUTOCLIP,指出容器是否支援自動裁剪控件顯示區域。
CComControlBase::GetAmbientBackColor 擷取容器所定義之所有控件的環境背景色彩DISPID_AMBIENT_BACKCOLOR。
CComControlBase::GetAmbientCharSet 擷取容器所定義之所有控件的環境字元集DISPID_AMBIENT_CHARSET。
CComControlBase::GetAmbientCodePage 擷取容器所定義之所有控件的環境字元集DISPID_AMBIENT_CODEPAGE。
CComControlBase::GetAmbientDisplayAsDefault 擷取DISPID_AMBIENT_DISPLAYASDEFAULT,如果容器已將此網站中的控件標示為預設按鈕,則為TRUE的旗標,因此按鈕控件應該以較厚的框架繪製本身。
CComControlBase::GetAmbientDisplayName 擷取DISPID_AMBIENT_DISPLAYNAME,容器提供給 控件的名稱。
CComControlBase::GetAmbientFont 擷取容器環境 IFont 介面的指標。
CComControlBase::GetAmbientFontDisp 擷取容器環境 IFontDisp 分派介面的指標。
CComControlBase::GetAmbientForeColor 擷取容器所定義之所有控件的環境前景色彩DISPID_AMBIENT_FORECOLOR。
CComControlBase::GetAmbientLocaleID 擷取DISPID_AMBIENT_LOCALEID容器所使用的語言標識碼。
CComControlBase::GetAmbientMessageReflect 擷取DISPID_AMBIENT_MESSAGEREFLECT,指出容器是否要接收視窗訊息(例如WM_DRAWITEM)作為事件。
CComControlBase::GetAmbientPalette 擷取DISPID_AMBIENT_PALETTE,用來存取容器的 HPALETTE。
CComControlBase::GetAmbientProperty 擷取標識碼指定的容器屬性。
CComControlBase::GetAmbientRightToLeft 擷取DISPID_AMBIENT_RIGHTTOLEFT,容器顯示內容的方向。
CComControlBase::GetAmbientScaleUnits 擷取DISPID_AMBIENT_SCALEUNITS,容器的環境單位(例如英吋或公分)來顯示標籤。
CComControlBase::GetAmbientShowGrabHandles 擷取DISPID_AMBIENT_SHOWGRABHANDLES,指出容器是否允許控件在作用中時顯示本身的抓取控點。
CComControlBase::GetAmbientShowHatching 擷取DISPID_AMBIENT_SHOWHATCHING,指出容器是否允許控件在UI使用中時以影線模式顯示本身。
CComControlBase::GetAmbientSupportsMnemonics 擷取DISPID_AMBIENT_SUPPORTSMNEMONICS,指出容器是否支援鍵盤助記鍵的旗標。
CComControlBase::GetAmbientTextAlign 擷取DISPID_AMBIENT_TEXTALIGN,容器慣用的文字對齊方式:0 代表一般對齊方式(數位向右、文字向左)、1 代表左對齊、2 代表置中對齊,3 表示靠右對齊。
CComControlBase::GetAmbientTopToBottom 擷取DISPID_AMBIENT_TOPTOBOTTOM,容器顯示內容的方向。
CComControlBase::GetAmbientUIDead 擷取DISPID_AMBIENT_UIDEAD,指出容器是否想要控件回應使用者介面動作。
CComControlBase::GetAmbientUserMode 擷取DISPID_AMBIENT_USERMODE,指出容器處於執行模式 (TRUE) 或設計模式 (FALSE) 的旗標。
CComControlBase::GetDirty 傳回數據成員 m_bRequiresSave的值。
CComControlBase::GetZoomInfo 擷取啟用進行就地編輯之控件的 numerator 和分母的 x 和 y 值。
CComControlBase::InPlaceActivate 讓控件從非使用中狀態轉換為 iVerb動詞所指出的任何狀態。
CComControlBase::InternalGetSite 呼叫這個方法,以查詢控件月臺,以取得已識別介面的指標。
CComControlBase::OnDraw 覆寫此方法以繪製控件。
CComControlBase::OnDrawAdvanced 默認值 OnDrawAdvanced 會準備標準化的裝置內容以繪製,然後呼叫控件類別的 OnDraw 方法。
CComControlBase::OnKillFocus 檢查控件是否為就地作用中,並具有有效的控件網站,然後通知容器控件失去焦點。
CComControlBase::OnMouseActivate 檢查UI是否處於使用者模式,然後啟動控制項。
CComControlBase::OnPaint 準備容器進行繪製、取得控制項的工作區,然後呼叫控件類別的 OnDraw 方法。
CComControlBase::OnSetFocus 檢查控件是否為就地作用中,並具有有效的控件網站,然後通知容器控件已取得焦點。
CComControlBase::P reTranslateAccelerator 覆寫此方法以提供您自己的鍵盤快速鍵處理程式。
CComControlBase::SendOnClose 通知所有向建議持有人註冊的諮詢接收,通知控制已經關閉。
CComControlBase::SendOnDataChange 通知向建議持有人註冊的所有諮詢接收,告知控制數據已變更。
CComControlBase::SendOnRename 通知向建議持有人註冊的所有諮詢接收,告知控件有新的Moniker。
CComControlBase::SendOnSave 通知所有向建議持有人註冊的諮詢接收,告知控制已儲存。
CComControlBase::SendOnViewChange 通知所有已註冊的諮詢接收,控件的檢視已變更。
CComControlBase::SetControlFocus 設定或移除控制件的鍵盤焦點。
CComControlBase::SetDirty 將數據成員m_bRequiresSave設定為 bDirty 中的值。

公用資料成員

名稱 描述
CComControlBase::m_bAutoSize 指出控制項不能是任何其他大小的旗標。
CComControlBase::m_bDrawFromNatural 旗標,指出 IDataObjectImpl::GetDataCComControlBase::GetZoomInfo 應該從 m_sizeNatural 設定控件大小,而不是從 m_sizeExtent設定。
CComControlBase::m_bDrawGetDataInHimetric IDataObjectImpl::GetData指出繪製時應該使用 HIMETRIC 單位而非圖元的旗標。
CComControlBase::m_bInPlaceActive 指出控件為就地作用中的旗標。
CComControlBase::m_bInPlaceSiteEx 指出容器的旗標支援 IOleInPlaceSiteEx 介面和 OCX96 控件功能,例如無視窗和無閃爍控件。
CComControlBase::m_bNegotiatedWnd 旗標,指出控件是否已與容器交涉,以支援 OCX96 控件功能(例如無閃爍和無視窗控件),以及控件是否為視窗或無視窗。
CComControlBase::m_bRecomposeOnResize 指出當容器變更控件的顯示大小時,控件想要重新編譯其簡報的旗標。
CComControlBase::m_bRequiresSave 指出控件自上次儲存后已變更的旗標。
CComControlBase::m_bResizeNatural 旗標,指出當容器變更控件的顯示大小時,控件想要調整其自然範圍(其未調整的實體大小)。
CComControlBase::m_bUIActive 指出控件的使用者介面,例如功能表和工具列的旗標為使用中。
CComControlBase::m_bUsingWindowRgn 指出控件使用的旗標是使用容器提供的窗口區域。
CComControlBase::m_bWasOnceWindowless 指出控件為無視窗的旗標,但目前可能或可能不是無視窗。
CComControlBase::m_bWindowOnly 指出控件的旗標應該視窗化,即使容器支援無視窗控件也一樣。
CComControlBase::m_bWndLess 指出控件為無視窗的旗標。
CComControlBase::m_hWndCD 包含與控件相關聯之視窗句柄的參考。
CComControlBase::m_nFreezeEvents 容器凍結事件(拒絕接受事件)的次數計數,而不需要介入解凍事件(接受事件)。
CComControlBase::m_rcPos 控件以像素為單位的位置,以容器的座標表示。
CComControlBase::m_sizeExtent 特定顯示器的 HIMETRIC 單位控制件範圍(每個單位為 0.01 公厘)。
CComControlBase::m_sizeNatural HIMETRIC 單位中控件的實體大小(每個單位為0.01公厘)。
CComControlBase::m_spAdviseSink 容器上諮詢連線的直接指標(容器的 IAdviseSink)。
CComControlBase::m_spAmbientDispatch CComDispatchDriver物件,可讓您透過IDispatch指標擷取和設定容器的屬性。
CComControlBase::m_spClientSite 容器內控件用戶端月臺的指標。
CComControlBase::m_spDataAdviseHolder 提供標準方法來保存數據對象之間的諮詢連線,並建議接收。
CComControlBase::m_spInPlaceSite 容器 IOleInPlaceSiteIOleInPlaceSiteExIOleInPlaceSiteWindowless 介面指標的指標。
CComControlBase::m_spOleAdviseHolder 提供保存諮詢連線之方法的標準實作。

備註

這個類別提供建立和管理ATL控件的方法。 CComControl 類別 衍生自 CComControlBase。 當您使用 ATL 控件精靈建立標準控件或 DHTML 控件時,精靈會自動從 CComControlBase衍生類別。

如需建立控件的詳細資訊,請參閱 ATL 教學課程。 如需 ATL 專案精靈的詳細資訊,請參閱建立 ATL 專案一文

需求

標頭: atlctl.h

CComControlBase::AppearanceType

如果您的 m_nAppearance 股票屬性不是 類型 short,請覆寫 。

typedef short AppearanceType;

備註

ATL 控件精靈會新增 m_nAppearance short 類型的庫存屬性。 如果您使用不同的資料類型,請覆寫 AppearanceType

CComControlBase::CComControlBase

建構函式。

CComControlBase(HWND& h);

參數

小時
與控件關聯的視窗句柄。

備註

將控件大小初始化為 5080X5080 HIMETRIC 單位(2“X2”),並將數據成員值初始化 CComControlBase 為 NULL 或 FALSE。

CComControlBase::~CComControlBase

解構函式。

~CComControlBase();

備註

如果控件已視窗化, ~CComControlBase 請呼叫 DestroyWindow 加以終結。

CComControlBase::ControlQueryInterface

擷取所要求介面的指標。

virtual HRESULT ControlQueryInterface(const IID& iid,
    void** ppv);

參數

iid
所要求介面的 GUID。

ppv
iid識別之介面指標的指標,如果找不到介面,則為 NULL。

備註

只會處理 COM 對應數據表中的介面。

範例

// Retrieve the control's IOleObject interface. Note interface 
// is automatically released when pOleObject goes out of scope

CComPtr<IOleObject> pOleObject;
ControlQueryInterface(IID_IOleObject, (void**)&pOleObject);

CComControlBase::D oesVerbActivate

檢查 控件IOleObjectImpl::DoVerb所使用的 iVerb 參數是否啟動控制件的使用者介面 (iVerb 等於 OLEIVERB_UIACTIVATE),定義當使用者按兩下控制項時所採取的動作(iVerb 等於 OLEIVERB_PRIMARY)、顯示控件 (iVerb 等於 OLEIVERB_SHOW),或啟動控件 (iVerb 等於 OLEIVERB_INPLACEACTIVATE)。

BOOL DoesVerbActivate(LONG iVerb);

參數

iVerb
值,表示要由 DoVerb執行的動作。

傳回值

如果 iVerb 等於 OLEIVERB_UIACTIVATE、OLEIVERB_PRIMARY、OLEIVERB_SHOW 或 OLEIVERB_INPLACEACTIVATE,則傳回 TRUE;否則會傳回 FALSE。

備註

您可以覆寫這個方法,以定義您自己的啟用動詞動詞。

CComControlBase::D oesVerbUIActivate

檢查 所使用的 IOleObjectImpl::DoVerb iVerb 參數是否讓控件的使用者介面啟動並傳回 TRUE。

BOOL DoesVerbUIActivate(LONG iVerb);

參數

iVerb
值,表示要由 DoVerb執行的動作。

傳回值

如果 iVerb 等於 OLEIVERB_UIACTIVATE、OLEIVERB_PRIMARY、OLEIVERB_SHOW 或 OLEIVERB_INPLACEACTIVATE,則傳回 TRUE。 否則,方法會傳回 FALSE。

CComControlBase::D oVerbProperties

顯示控件的屬性頁。

HRESULT DoVerbProperties(LPCRECT /* prcPosRect */, HWND hwndParent);

參數

prcPosRec
已保留。

hwndParent
包含控件之視窗的句柄。

傳回值

其中一個標準 HRESULT 值。

範例

// The following implementation of the WM_RBUTTONDOWN message handler
// will pop up the ActiveX Control's PropertyPages 
LRESULT CMyComposite::OnRButtonDown(UINT /*uMsg*/, WPARAM /*wParam*/, 
   LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
   DoVerbProperties(NULL, ::GetActiveWindow());
   return 0L;
}

 

MESSAGE_HANDLER(WM_RBUTTONDOWN, OnRButtonDown)

CComControlBase::FireViewChange

呼叫這個方法,告知容器重新繪製控件,或通知已註冊的建議接收控件的檢視已變更。

HRESULT FireViewChange();

傳回值

其中一個標準 HRESULT 值。

備註

如果控件為使用中(控件類別數據成員 CComControlBase::m_bInPlaceActive 為 TRUE),請通知容器您想要重新繪製整個控件。 如果控件處於非使用中狀態,請通知控件已註冊的建議接收(透過控件類別數據成員 CComControlBase::m_spAdviseSink)控件的檢視已變更。

範例

STDMETHODIMP CMyControl::put_Shape(int newVal)
{
   // store newVal in m_nShape user-defined member
   m_nShape = newVal;

   // notify container to redraw control
   FireViewChange();
   return S_OK;
}

CComControlBase::GetAmbientAppearance

擷取DISPID_AMBIENT_APPEARANCE,控件的目前外觀設定:0 表示平面,3D 為 1。

HRESULT GetAmbientAppearance(short& nAppearance);

參數

nAppearance
屬性DISPID_AMBIENT_APPEARANCE。

傳回值

其中一個標準 HRESULT 值。

範例

HRESULT OnDraw(ATL_DRAWINFO& di)
{
   short nAppearance;
   RECT& rc = *(RECT*)di.prcBounds;

   // draw 3D border if AmbientAppearance is not supported or is set to 1 
   HRESULT hr = GetAmbientAppearance(nAppearance);
   if (hr != S_OK || nAppearance==1)
   {
      DrawEdge(di.hdcDraw, &rc, EDGE_SUNKEN, BF_RECT);
   }
   else
   {
      Rectangle(di.hdcDraw, rc.left, rc.top, rc.right, rc.bottom);
   }

   SetTextAlign(di.hdcDraw, TA_CENTER|TA_BASELINE);
   LPCTSTR pszText = _T("ATL 8.0 : MyControl");

   // For security reasons, we recommend that you use the lstrlen function
   // with caution. Here, we can guarantee that pszText is NULL terminated,
   // and therefore it is safe to use this function.
   TextOut(di.hdcDraw, 
      (rc.left + rc.right) / 2, 
      (rc.top + rc.bottom) / 2, 
      pszText, 
      lstrlen(pszText));

   return S_OK;
}

CComControlBase::GetAmbientAutoClip

擷取DISPID_AMBIENT_AUTOCLIP,指出容器是否支援自動裁剪控件顯示區域。

HRESULT GetAmbientAutoClip(BOOL& bAutoClip);

參數

bAutoClip
屬性DISPID_AMBIENT_AUTOCLIP。

傳回值

其中一個標準 HRESULT 值。

CComControlBase::GetAmbientBackColor

擷取容器所定義之所有控件的環境背景色彩DISPID_AMBIENT_BACKCOLOR。

HRESULT GetAmbientBackColor(OLE_COLOR& BackColor);

參數

BackColor
屬性DISPID_AMBIENT_BACKCOLOR。

傳回值

其中一個標準 HRESULT 值。

CComControlBase::GetAmbientCharSet

擷取容器所定義之所有控件的環境字元集DISPID_AMBIENT_CHARSET。

HRESULT GetAmbientCharSet(BSTR& bstrCharSet);

參數

bstrCharSet
屬性DISPID_AMBIENT_CHARSET。

傳回值

傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。

CComControlBase::GetAmbientCodePage

擷取容器所定義之所有控件的環境代碼頁DISPID_AMBIENT_CODEPAGE。

HRESULT GetAmbientCodePage(ULONG& ulCodePage);

參數

ulCodePage
屬性DISPID_AMBIENT_CODEPAGE。

傳回值

傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。

CComControlBase::GetAmbientDisplayAsDefault

擷取DISPID_AMBIENT_DISPLAYASDEFAULT,如果容器已將此網站中的控件標示為預設按鈕,則為TRUE的旗標,因此按鈕控件應該以較厚的框架繪製本身。

HRESULT GetAmbientDisplayAsDefault(BOOL& bDisplayAsDefault);

參數

bDisplayAsDefault
屬性DISPID_AMBIENT_DISPLAYASDEFAULT。

傳回值

其中一個標準 HRESULT 值。

CComControlBase::GetAmbientDisplayName

擷取DISPID_AMBIENT_DISPLAYNAME,容器提供給 控件的名稱。

HRESULT GetAmbientDisplayName(BSTR& bstrDisplayName);

參數

bstrDisplayName
屬性DISPID_AMBIENT_DISPLAYNAME。

傳回值

其中一個標準 HRESULT 值。

CComControlBase::GetAmbientFont

擷取容器環境 IFont 介面的指標。

HRESULT GetAmbientFont(IFont** ppFont);

參數

ppFont
容器環境 IFont 介面的指標。

傳回值

其中一個標準 HRESULT 值。

備註

如果屬性為 NULL,則指標為 NULL。 如果指標不是 NULL,呼叫端必須釋放指標。

CComControlBase::GetAmbientFontDisp

擷取容器環境 IFontDisp 分派介面的指標。

HRESULT GetAmbientFontDisp(IFontDisp** ppFont);

參數

ppFont
容器環境 IFontDisp 分派介面的指標。

傳回值

傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。

備註

如果屬性為 NULL,則指標為 NULL。 如果指標不是 NULL,呼叫端必須釋放指標。

CComControlBase::GetAmbientForeColor

擷取容器所定義之所有控件的環境前景色彩DISPID_AMBIENT_FORECOLOR。

HRESULT GetAmbientForeColor(OLE_COLOR& ForeColor);

參數

ForeColor
屬性DISPID_AMBIENT_FORECOLOR。

傳回值

其中一個標準 HRESULT 值。

CComControlBase::GetAmbientLocaleID

擷取DISPID_AMBIENT_LOCALEID容器所使用的語言標識碼。

HRESULT GetAmbientLocaleID(LCID& lcid);

參數

lcid
屬性DISPID_AMBIENT_LOCALEID。

傳回值

其中一個標準 HRESULT 值。

備註

控件可以使用這個識別碼,將其使用者介面調整為不同的語言。

CComControlBase::GetAmbientMessageReflect

擷取DISPID_AMBIENT_MESSAGEREFLECT旗標,指出容器是否要接收視窗訊息(例如 WM_DRAWITEM) 作為事件。

HRESULT GetAmbientMessageReflect(BOOL& bMessageReflect);

參數

bMessageReflect
屬性DISPID_AMBIENT_MESSAGEREFLECT。

傳回值

其中一個標準 HRESULT 值。

CComControlBase::GetAmbientPalette

擷取DISPID_AMBIENT_PALETTE,用來存取容器的 HPALETTE。

HRESULT GetAmbientPalette(HPALETTE& hPalette);

參數

hPalette
屬性DISPID_AMBIENT_PALETTE。

傳回值

其中一個標準 HRESULT 值。

CComControlBase::GetAmbientProperty

擷取 dispid指定的容器屬性。

HRESULT GetAmbientProperty(DISPID dispid, VARIANT& var);

參數

dispid
要擷取之容器屬性的標識碼。

var
要接收屬性的變數。

傳回值

其中一個標準 HRESULT 值。

備註

ATL 提供了一組協助程式函式來擷取特定屬性,例如 CComControlBase::GetAmbientBackColor。 如果沒有適當的方法可用,請使用 GetAmbientProperty

CComControlBase::GetAmbientRightToLeft

擷取DISPID_AMBIENT_RIGHTTOLEFT,容器顯示內容的方向。

HRESULT GetAmbientRightToLeft(BOOL& bRightToLeft);

參數

bRightToLeft
屬性DISPID_AMBIENT_RIGHTTOLEFT。 如果內容由右至左顯示,則設定為 TRUE;如果內容由左至右顯示,則為 FALSE。

傳回值

傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。

CComControlBase::GetAmbientScaleUnits

擷取DISPID_AMBIENT_SCALEUNITS,容器的環境單位(例如英吋或公分)來顯示標籤。

HRESULT GetAmbientScaleUnits(BSTR& bstrScaleUnits);

參數

bstrScaleUnits
屬性DISPID_AMBIENT_SCALEUNITS。

傳回值

其中一個標準 HRESULT 值。

CComControlBase::GetAmbientShowGrabHandles

擷取DISPID_AMBIENT_SHOWGRABHANDLES,指出容器是否允許控件在作用中時顯示本身的抓取控點。

HRESULT GetAmbientShowGrabHandles(BOOL& bShowGrabHandles);

參數

bShowGrabHandles
屬性DISPID_AMBIENT_SHOWGRABHANDLES。

傳回值

其中一個標準 HRESULT 值。

CComControlBase::GetAmbientShowHatching

擷取DISPID_AMBIENT_SHOWHATCHING,指出當控件的使用者介面為使用中時,容器是否允許控件以影線模式顯示本身。

HRESULT GetAmbientShowHatching(BOOL& bShowHatching);

參數

bShowHatching
屬性DISPID_AMBIENT_SHOWHATCHING。

傳回值

其中一個標準 HRESULT 值。

CComControlBase::GetAmbientSupportsMnemonics

擷取DISPID_AMBIENT_SUPPORTSMNEMONICS,指出容器是否支援鍵盤助記鍵的旗標。

HRESULT GetAmbientSupportsMnemonics(BOOL& bSupportsMnemonics);

參數

bSupportsMnemonics
屬性DISPID_AMBIENT_SUPPORTSMNEMONICS。

傳回值

其中一個標準 HRESULT 值。

CComControlBase::GetAmbientTextAlign

擷取DISPID_AMBIENT_TEXTALIGN,容器慣用的文字對齊方式:0 代表一般對齊方式(數位向右、文字向左)、1 代表左對齊、2 代表置中對齊,3 表示靠右對齊。

HRESULT GetAmbientTextAlign(short& nTextAlign);

參數

nTextAlign
屬性DISPID_AMBIENT_TEXTALIGN。

傳回值

其中一個標準 HRESULT 值。

CComControlBase::GetAmbientTopToBottom

擷取DISPID_AMBIENT_TOPTOBOTTOM,容器顯示內容的方向。

HRESULT GetAmbientTopToBottom(BOOL& bTopToBottom);

參數

bTopToBottom
屬性DISPID_AMBIENT_TOPTOBOTTOM。 如果文字由上至下顯示,則設定為 TRUE;如果文字顯示在最上層,則為 FALSE。

傳回值

傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。

CComControlBase::GetAmbientUIDead

擷取DISPID_AMBIENT_UIDEAD,指出容器是否想要控件回應使用者介面動作。

HRESULT GetAmbientUIDead(BOOL& bUIDead);

參數

bUIDead
屬性DISPID_AMBIENT_UIDEAD。

傳回值

其中一個標準 HRESULT 值。

備註

如果為 TRUE,則控件不應該回應。 不論DISPID_AMBIENT_USERMODE旗標為何,都會套用此旗標。 請參閱 CComControlBase::GetAmbientUserMode

CComControlBase::GetAmbientUserMode

擷取DISPID_AMBIENT_USERMODE,指出容器處於執行模式 (TRUE) 或設計模式 (FALSE) 的旗標。

HRESULT GetAmbientUserMode(BOOL& bUserMode);

參數

bUserMode
屬性DISPID_AMBIENT_USERMODE。

傳回值

其中一個標準 HRESULT 值。

CComControlBase::GetDirty

傳回數據成員 m_bRequiresSave的值。

BOOL GetDirty();

傳回值

傳回數據成員 m_bRequiresSave的值。

備註

此值是使用 CComControlBase::SetDirty 來設定。

CComControlBase::GetZoomInfo

擷取啟用進行就地編輯之控件的 numerator 和分母的 x 和 y 值。

void GetZoomInfo(ATL_DRAWINFO& di);

參數


將保留縮放因數的分子和分母的結構。 如需詳細資訊,請參閱 ATL_DRAWINFO

備註

縮放因數是控件自然大小與其目前範圍的比例。

CComControlBase::InPlaceActivate

讓控件從非使用中狀態轉換為 iVerb動詞所指出的任何狀態。

HRESULT InPlaceActivate(LONG iVerb, const RECT* prcPosRect = NULL);

參數

iVerb
值,指出 IOleObjectImpl::D oVerb 所要執行的動作。

prcPosRect
就地控件位置的指標。

傳回值

其中一個標準 HRESULT 值。

備註

啟用之前,這個方法會檢查控件是否有用戶端網站、檢查控件的可見程度,以及取得控件在父視窗中的位置。 啟用控件之後,這個方法會啟動控件的使用者介面,並告訴容器讓控件可見。

這個方法也會擷取 IOleInPlaceSite控件的、 IOleInPlaceSiteExIOleInPlaceSiteWindowless 介面指標,並將它儲存在控件類別的數據成員 CComControlBase::m_spInPlaceSite中。 控件類別數據成員 CComControlBase::m_bInPlaceSiteEx、CComControlBase::m_bWndLessCComControlBase::m_bWasOnceWindowlessCComControlBase::m_bNegotiatedWnd會視情況設定為 true。

CComControlBase::InternalGetSite

呼叫這個方法,以查詢控件月臺,以取得已識別介面的指標。

HRESULT InternalGetSite(REFIID riid, void** ppUnkSite);

參數

riid
應該在 ppUnkSite傳回之介面指標的 IID。

ppUnkSite
接收 riid 中所要求介面指標的指標變數位址。

傳回值

傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。

備註

如果月臺支援 riid 所要求的介面,則指標會透過 ppUnkSite回。 否則, ppUnkSite 會設定為 NULL。

CComControlBase::m_bAutoSize

指出控制項不能是任何其他大小的旗標。

unsigned m_bAutoSize:1;

備註

此旗標會由 IOleObjectImpl::SetExtent 檢查,如果為 TRUE,則會導致函式傳回E_FAIL。

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

如果您在 ATL 控件精靈的 [庫存屬性] 索引卷標上新增 [自動重設大小] 選項,精靈會在控件類別中自動建立此數據成員、建立屬性的 put 和 get 方法,並支援 IPropertyNotifySink,以在屬性變更時自動通知容器。

CComControlBase::m_bDrawFromNatural

旗標,指出 IDataObjectImpl::GetDataCComControlBase::GetZoomInfo 應該從 m_sizeNatural 設定控件大小,而不是從 m_sizeExtent設定。

unsigned m_bDrawFromNatural:1;

備註

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

CComControlBase::m_bDrawGetDataInHimetric

IDataObjectImpl::GetData指出繪製時應該使用 HIMETRIC 單位而非圖元的旗標。

unsigned m_bDrawGetDataInHimetric:1;

備註

每個邏輯 HIMETRIC 單位都是 0.01 公厘。

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

CComControlBase::m_bInPlaceActive

指出控件為就地作用中的旗標。

unsigned m_bInPlaceActive:1;

備註

這表示控件是可見的,如果有任何,則為視窗,但其功能表和工具列可能不是作用中。 旗 m_bUIActive 標表示控件的使用者介面,例如功能表也作用中。

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

CComControlBase::m_bInPlaceSiteEx

指出容器的旗標支援 IOleInPlaceSiteEx 介面和 OCX96 控件功能,例如無視窗和無閃爍控件。

unsigned m_bInPlaceSiteEx:1;

備註

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

數據成員m_spInPlaceSite會根據 和 m_bInPlaceSiteEx 旗標的值m_bWndLess,指向 IOleInPlaceSite、IOleInPlaceSiteExIOleInPlaceSiteWindowless 介面。 (數據成員 m_bNegotiatedWnd 必須是TRUE, m_spInPlaceSite 指標才能有效。

如果 m_bWndLess 為 FALSE 且 m_bInPlaceSiteEx 為 TRUE, m_spInPlaceSite 則為 IOleInPlaceSiteEx 介面指標。 如需顯示這三個數據成員之間關聯性的數據表,請參閱 m_spInPlaceSite

CComControlBase::m_bNegotiatedWnd

旗標,指出控件是否已與容器交涉,以支援 OCX96 控件功能(例如無閃爍和無視窗控件),以及控件是否為視窗或無視窗。

unsigned m_bNegotiatedWnd:1;

備註

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

m_bNegotiatedWnd 標必須是TRUE, m_spInPlaceSite 指標才能有效。

CComControlBase::m_bRecomposeOnResize

指出當容器變更控件的顯示大小時,控件想要重新編譯其簡報的旗標。

unsigned m_bRecomposeOnResize:1;

備註

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

IOleObjectImpl::SetExtent 會檢查此旗標,如果為 TRUE,SetExtent則會通知檢視容器變更。 如果設定此旗標,則也應該設定 OLEMISC 列舉中的OLEMISC_RECOMPOSEONRESIZE位。

CComControlBase::m_bRequiresSave

指出控件自上次儲存后已變更的旗標。

unsigned m_bRequiresSave:1;

備註

的值m_bRequiresSave可以使用 CComControlBase::SetDirty 來設定,並使用 CComControlBase::GetDirty 擷取

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

CComControlBase::m_bResizeNatural

旗標,指出當容器變更控件的顯示大小時,控件想要調整其自然範圍(其未調整的實體大小)。

unsigned m_bResizeNatural:1;

備註

此旗標會由 IOleObjectImpl::SetExtent 檢查,如果為 TRUE,傳入 SetExtent 的大小會指派給 m_sizeNatural

傳入的大小 SetExtent 一律會指派給 m_sizeExtent,而不論 的值 m_bResizeNatural為何。

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

CComControlBase::m_bUIActive

指出控件的使用者介面,例如功能表和工具列的旗標為使用中。

unsigned m_bUIActive:1;

備註

m_bInPlaceActive 標表示控件為使用中,但不是其使用者介面作用中。

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

CComControlBase::m_bUsingWindowRgn

指出控件使用的旗標是使用容器提供的窗口區域。

unsigned m_bUsingWindowRgn:1;

備註

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

CComControlBase::m_bWasOnceWindowless

指出控件為無視窗的旗標,但目前可能或可能不是無視窗。

unsigned m_bWasOnceWindowless:1;

備註

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

CComControlBase::m_bWindowOnly

指出控件的旗標應該視窗化,即使容器支援無視窗控件也一樣。

unsigned m_bWindowOnly:1;

備註

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

CComControlBase::m_bWndLess

指出控件為無視窗的旗標。

unsigned m_bWndLess:1;

備註

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

數據成員m_spInPlaceSite會根據 和 CComControlBase::m_bInPlaceSiteEx 旗標的值m_bWndLess,指向 IOleInPlaceSiteExIOleInPlaceSiteWindowless 介面。 (資料成員 CComControlBase::m_bNegotiatedWnd 必須是 TRUE,CComControlBase ::m_spInPlaceSite 指標才能有效。

如果 m_bWndLess 為TRUE, m_spInPlaceSite 則為 IOleInPlaceSiteWindowless 介面指標。 如需顯示這些數據成員之間完整關聯性的數據表,請參閱 CComControlBase::m_spInPlaceSite

CComControlBase::m_hWndCD

包含與控件相關聯之視窗句柄的參考。

HWND& m_hWndCD;

備註

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

CComControlBase::m_nFreezeEvents

容器凍結事件(拒絕接受事件)的次數計數,而不需要介入解凍事件(接受事件)。

short m_nFreezeEvents;

備註

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

CComControlBase::m_rcPos

控件以像素為單位的位置,以容器的座標表示。

RECT m_rcPos;

備註

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

CComControlBase::m_sizeExtent

特定顯示器的 HIMETRIC 單位控制件範圍(每個單位為 0.01 公厘)。

SIZE m_sizeExtent;

備註

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

此大小會依顯示器縮放。 控件的實體大小是在數據成員中 m_sizeNatural 指定,而且是固定的。

您可以使用全域函 式 AtlHiMetricToPixel,將大小轉換成圖元。

CComControlBase::m_sizeNatural

HIMETRIC 單位中控件的實體大小(每個單位為0.01公厘)。

SIZE m_sizeNatural;

備註

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

這個大小是固定的,而 中的 m_sizeExtent 大小會依顯示器縮放。

您可以使用全域函 式 AtlHiMetricToPixel,將大小轉換成圖元。

CComControlBase::m_spAdviseSink

容器上諮詢連線的直接指標(容器的 IAdviseSink)。

CComPtr<IAdviseSink>
    m_spAdviseSink;

備註

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

CComControlBase::m_spAmbientDispatch

CComDispatchDriver物件,可讓您透過IDispatch指標擷取和設定對象的屬性。

CComDispatchDriver m_spAmbientDispatch;

備註

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

CComControlBase::m_spClientSite

容器內控件用戶端月臺的指標。

CComPtr<IOleClientSite>
    m_spClientSite;

備註

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

CComControlBase::m_spDataAdviseHolder

提供標準方法來保存數據對象之間的諮詢連線,並建議接收。

CComPtr<IDataAdviseHolder>
    m_spDataAdviseHolder;

備註

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

數據對像是一種控件,可以傳輸數據並實 作 IDataObject,其方法會指定數據的格式和傳輸媒體。

介面m_spDataAdviseHolder會實作 IDataObject::D Advise 和 IDataObject::D Unadvise 方法來建立和刪除容器的諮詢連線。 控件的容器必須藉由支援 IAdviseSink 介面來實作建議接收。

CComControlBase::m_spInPlaceSite

容器 IOleInPlaceSiteIOleInPlaceSiteExIOleInPlaceSiteWindowless 介面指標的指標。

CComPtr<IOleInPlaceSiteWindowless>
    m_spInPlaceSite;

備註

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

m_spInPlaceSite只有當m_bNegotiatedWnd旗標為 TRUE 時,指標才有效。

下表顯示指標類型如何 m_spInPlaceSite 相依 於m_bWndLess 和資料 成員旗標m_bInPlaceSiteEx

m_spInPlaceSite類型 m_bWndLess值 m_bInPlaceSiteEx值
IOleInPlaceSiteWindowless TRUE TRUE 或 FALSE
IOleInPlaceSiteEx FALSE true
IOleInPlaceSite false FALSE

CComControlBase::m_spOleAdviseHolder

提供保存諮詢連線之方法的標準實作。

CComPtr<IOleAdviseHolder>
    m_spOleAdviseHolder;

備註

注意

若要在控件類別內使用此資料成員,您必須將它宣告為控件類別中的數據成員。 您的控件類別不會從基類繼承此數據成員,因為它是在基類的等位內宣告。

介面 m_spOleAdviseHolder 會實作 IOleObject::AdvisorIOleObject::Unadvise 方法來建立和刪除容器的諮詢連線。 控件的容器必須藉由支援 IAdviseSink 介面來實作建議接收。

CComControlBase::OnDraw

覆寫此方法以繪製控件。

virtual HRESULT OnDraw(ATL_DRAWINFO& di);

參數


ATL_DRAWINFO 結構的參考,其中包含繪圖資訊,例如繪圖層面、控件界限,以及繪圖是否已優化。

傳回值

標準 HRESULT 值。

備註

根據 CComControlBase::OnDrawAdvanced 中所設定的旗標,預設OnDraw會刪除或還原裝置內容或執行任何動作。

OnDraw當您使用 ATL 控制件精靈建立控制項時,系統會自動將方法新增至控件類別。 精靈的預設 OnDraw 會繪製具有標籤 “ATL 8.0” 的矩形。

範例

請參閱 CComControlBase::GetAmbientAppearance 的範例

CComControlBase::OnDrawAdvanced

默認值 OnDrawAdvanced 會準備標準化的裝置內容以繪製,然後呼叫控件類別的 OnDraw 方法。

virtual HRESULT OnDrawAdvanced(ATL_DRAWINFO& di);

參數


ATL_DRAWINFO 結構的參考,其中包含繪圖資訊,例如繪圖層面、控件界限,以及繪圖是否已優化。

傳回值

標準 HRESULT 值。

備註

如果您想要接受容器傳遞的裝置內容而不正規化,請覆寫此方法。

如需詳細資訊,請參閱 CComControlBase::OnDraw

CComControlBase::OnKillFocus

檢查控件是否為就地作用中,並具有有效的控件網站,然後通知容器控件失去焦點。

LRESULT OnKillFocus(UINT /* nMsg */,
    WPARAM /* wParam */,
    LPARAM /* lParam */,
    BOOL& bHandled);

參數

nMsg
已保留。

wParam
已保留。

lParam
已保留。

bHandled
指出是否成功處理視窗訊息的旗標。 預設值為 FALSE。

傳回值

一律會傳回 1。

CComControlBase::OnMouseActivate

檢查UI是否處於使用者模式,然後啟動控制項。

LRESULT OnMouseActivate(UINT /* nMsg */,
    WPARAM /* wParam */,
    LPARAM /* lParam */,
    BOOL& bHandled);

參數

nMsg
已保留。

wParam
已保留。

lParam
已保留。

bHandled
指出是否成功處理視窗訊息的旗標。 預設值為 FALSE。

傳回值

一律會傳回 1。

CComControlBase::OnPaint

準備容器進行繪製、取得控制項的工作區,然後呼叫控件類別的 OnDrawAdvanced 方法。

LRESULT OnPaint(UINT /* nMsg */,
    WPARAM wParam,
    LPARAM /* lParam */,
    BOOL& /* lResult */);

參數

nMsg
已保留。

wParam
現有的 HDC。

lParam
已保留。

lResult
已保留。

傳回值

永遠傳回零。

備註

如果 wParam 不是 NULL, OnPaint 假設它包含有效的 HDC,並使用它,而不是 CComControlBase::m_hWndCD

CComControlBase::OnSetFocus

檢查控件是否為就地作用中,並具有有效的控件網站,然後通知容器控件已取得焦點。

LRESULT OnSetFocus(UINT /* nMsg */,
    WPARAM /* wParam */,
    LPARAM /* lParam */,
    BOOL& bHandled);

參數

nMsg
已保留。

wParam
已保留。

lParam
已保留。

bHandled
指出是否成功處理視窗訊息的旗標。 預設值為 FALSE。

傳回值

一律會傳回 1。

備註

將通知傳送給控件已接收焦點的容器。

CComControlBase::P reTranslateAccelerator

覆寫此方法以提供您自己的鍵盤快速鍵處理程式。

BOOL PreTranslateAccelerator(LPMSG /* pMsg */,
    HRESULT& /* hRet */);

參數

pMsg
已保留。

hRet
已保留。

傳回值

根據預設,會傳回 FALSE。

CComControlBase::SendOnClose

通知所有向建議持有人註冊的諮詢接收,通知控制已經關閉。

HRESULT SendOnClose();

傳回值

傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。

備註

傳送通知,指出控件已關閉其諮詢接收。

CComControlBase::SendOnDataChange

通知向建議持有人註冊的所有諮詢接收,告知控制數據已變更。

HRESULT SendOnDataChange(DWORD advf = 0);

參數

advf
建議旗標,指定如何呼叫 IAdviseSink::OnDataChange 。 值來自 ADVF 列舉。

傳回值

傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。

CComControlBase::SendOnRename

通知向建議持有人註冊的所有諮詢接收,告知控件有新的Moniker。

HRESULT SendOnRename(IMoniker* pmk);

參數

pmk
控件之新Moniker的指標。

傳回值

傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。

備註

傳送控件Moniker已變更的通知。

CComControlBase::SendOnSave

通知所有向建議持有人註冊的諮詢接收,告知控制已儲存。

HRESULT SendOnSave();

傳回值

傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。

備註

傳送控件剛儲存其數據的通知。

CComControlBase::SendOnViewChange

通知所有已註冊的諮詢接收,控件的檢視已變更。

HRESULT SendOnViewChange(DWORD dwAspect, LONG lindex = -1);

參數

dwAspect
控件的外觀或檢視。

lindex
已變更之檢視的部分。 只有 -1 有效。

傳回值

傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。

備註

SendOnViewChange 會呼叫 IAdviseSink::OnViewChange。 目前唯一支援的lindex值為 -1,表示整個檢視都感興趣。

CComControlBase::SetControlFocus

設定或移除控制件的鍵盤焦點。

BOOL SetControlFocus(BOOL bGrab);

參數

bGrab
如果為 TRUE,請將鍵盤焦點設定為呼叫控件。 如果為 FALSE,請從呼叫控件移除鍵盤焦點,前提是其具有焦點。

傳回值

如果控件成功接收焦點,則傳回 TRUE;否則為 FALSE。

備註

針對視窗控制項,會呼叫 Windows API 函式 SetFocus 。 針對無視窗控件, 會呼叫 IOleInPlaceSiteWindowless::SetFocus 。 透過此呼叫,無視窗控件會取得鍵盤焦點,並可回應視窗訊息。

CComControlBase::SetDirty

將數據成員m_bRequiresSave設定為 bDirty 中的值。

void SetDirty(BOOL bDirty);

參數

bDirty
數據成員 CComControlBase::m_bRequiresSave的值。

備註

SetDirty(TRUE) 應該呼叫 為控件自上次儲存后已變更的旗標。 的值 m_bRequiresSave 會使用 CComControlBase::GetDirty 擷取。

另請參閱

CComControl 類別
類別概觀