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::GetData 和 CComControlBase::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 | 容器 IOleInPlaceSite、IOleInPlaceSiteEx 或 IOleInPlaceSiteWindowless 介面指標的指標。 |
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
控件的、 IOleInPlaceSiteEx
或 IOleInPlaceSiteWindowless
介面指標,並將它儲存在控件類別的數據成員 CComControlBase::m_spInPlaceSite中。 控件類別數據成員 CComControlBase::m_bInPlaceSiteEx、CComControlBase::m_bWndLess、CComControlBase::m_bWasOnceWindowless和 CComControlBase::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::GetData
和 CComControlBase::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、IOleInPlaceSiteEx 或 IOleInPlaceSiteWindowless 介面。 (數據成員 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
,指向 IOleInPlaceSiteEx 或 IOleInPlaceSiteWindowless 介面。 (資料成員 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
容器 IOleInPlaceSite、IOleInPlaceSiteEx 或 IOleInPlaceSiteWindowless 介面指標的指標。
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::Advisor 和 IOleObject::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 擷取。