共用方式為


COleControl 類別

開發 OLE 控制項的強大基底類別。

語法

class COleControl : public CWnd

成員

公用建構函式

名稱 描述
COleControl::COleControl 建立 COleControl 物件。

公用方法

名稱 描述
COleControl::AmbientAppearance 擷取控制項的目前外觀。
COleControl::AmbientBackColor 傳回環境 BackColor 屬性的值。
COleControl::AmbientDisplayName 傳回容器所指定之控制項的名稱。
COleControl::AmbientFont 傳回環境 Font 屬性的值。
COleControl::AmbientForeColor 傳回環境 ForeColor 屬性的值。
COleControl::AmbientLocaleID 傳回容器的地區設定識別碼。
COleControl::AmbientScaleUnits 傳回容器所使用的單位類型。
COleControl::AmbientShowGrabHandles 判斷是否應該顯示抓取控點。
COleControl::AmbientShowHatching 判斷是否應該顯示影線。
COleControl::AmbientTextAlign 傳回容器所指定的文字對齊類型。
COleControl::AmbientUIDead 判斷控制項是否應該回應使用者介面動作。
COleControl::AmbientUserMode 決定容器的模式。
COleControl::BoundPropertyChanged 通知容器系結屬性已變更。
COleControl::BoundPropertyRequestEdit 要求編輯屬性值的許可權。
COleControl::ClientToParent 將相對於控制項來源的點轉譯為相對於其容器來源的點。
COleControl::ClipCaretRect 如果控制項重迭插入號矩形,則調整插入號矩形。
COleControl::ControlInfoChanged 在 控制項所處理的助憶鍵集變更之後,呼叫此函式。
COleControl::D isplayError 將 [錯誤] 事件顯示給控制項的使用者。
COleControl::D oClick 實作 stock DoClick 方法。
COleControl::D oPropExchange 序列化 物件的屬性 COleControl
COleControl::D oSuperclass小畫家 重新繪製已從 Windows 控制項子類別化的 OLE 控制項。
COleControl::EnableSimpleFrame 啟用控制項的簡單畫面支援。
COleControl::ExchangeExtent 序列化控制項的寬度和高度。
COleControl::ExchangeStockProps 序列化控制項的庫存屬性。
COleControl::ExchangeVersion 序列化控制項的版本號碼。
COleControl::FireClick 引發股票 Click 事件。
COleControl::FireDblClick 引發股票 DblClick 事件。
COleControl::FireError 引發股票 Error 事件。
COleControl::FireEvent 引發自訂事件。
COleControl::FireKeyDown 引發股票 KeyDown 事件。
COleControl::FireKeyPress 引發股票 KeyPress 事件。
COleControl::FireKeyUp 引發股票 KeyUp 事件。
COleControl::FireMouseDown 引發股票 MouseDown 事件。
COleControl::FireMouseMove 引發股票 MouseMove 事件。
COleControl::FireMouseUp 引發股票 MouseUp 事件。
COleControl::FireReadyStateChange 引發控制項就緒狀態變更時的事件。
COleControl::GetActivationPolicy 改變支援 IPointerInactive 介面之控制項的預設啟用行為。
COleControl::GetAmbientProperty 傳回指定環境屬性的值。
COleControl::GetAppearance 傳回股票外觀屬性的值。
COleControl::GetBackColor 傳回 stock BackColor 屬性的值。
COleControl::GetBorderStyle 傳回 stock BorderStyle 屬性的值。
COleControl::GetCapture 判斷無視窗、啟動的控制項物件是否具有滑鼠擷取。
COleControl::GetClassID 擷取控制項的 OLE 類別識別碼。
COleControl::GetClientOffset 擷取控制項矩形區域左上角與其工作區左上角之間的差異。
COleControl::GetClientRect 擷取控制項工作區的大小。
COleControl::GetClientSite 查詢物件,以取得其容器內目前用戶端月臺的指標。
COleControl::GetControlFlags 擷取控制項旗標設定。
COleControl::GetControlSize 傳回 OLE 控制項的位置和大小。
COleControl::GetDC 提供無視窗控制項從其容器取得裝置內容的方法。
COleControl::GetEnabled 傳回 stock Enabled 屬性的值。
COleControl::GetExtendedControl 擷取屬於容器之擴充控制項物件的指標。
COleControl::GetFocus 判斷控制項是否具有焦點。
COleControl::GetFont 傳回 stock Font 屬性的值。
COleControl::GetFontTextMetrics 傳回 物件的計量 CFontHolder
COleControl::GetForeColor 傳回 stock ForeColor 屬性的值。
COleControl::GetHwnd 傳回 stock hWnd 屬性的值。
COleControl::GetMessageString 提供功能表項目的狀態列文字。
COleControl::GetNotSupported 防止使用者存取控制項的屬性值。
COleControl::GetReadyState 傳回控制項的整備狀態。
COleControl::GetRectInContainer 傳回控制項相對於其容器的矩形。
COleControl::GetStockTextMetrics 傳回 stock Font 屬性的計量。
COleControl::GetText 傳回 stock Text 或 Caption 屬性的值。
COleControl::GetWindowlessDropTarget 覆寫可讓無視窗控制項成為拖放作業的目標。
COleControl::InitializeIIDs 通知控制項將使用之 IID 的基類。
COleControl::InternalGetFont CFontHolder 回 stock Font 屬性的 物件。
COleControl::InternalGetText 擷取 stock Caption 或 Text 屬性。
COleControl::InternalSetReadyState 設定控制項的整備狀態,並引發就緒狀態變更事件。
COleControl::InvalidateControl 使顯示控制項的區域失效,使其重新繪製。
COleControl::InvalidateRgn 使容器視窗在指定區域內的工作區失效。 可用來重新繪製區域中的無視窗控制項。
COleControl::IsConvertingVBX 允許特製化載入 OLE 控制項。
COleControl::IsModified 判斷控制項狀態是否已變更。
COleControl::IsOptimizedDraw 指出容器是否支援目前繪圖作業的優化繪圖。
COleControl::IsSubclassedControl 呼叫 以判斷控制項子類別是否為 Windows 控制項。
COleControl::Load 重設任何先前的非同步資料,並起始控制項非同步屬性的新負載。
COleControl::LockInPlaceActive 判斷您的控制項是否可以由容器停用。
COleControl::OnAmbientPropertyChange 當環境屬性變更時呼叫。
COleControl::OnAppearanceChanged 變更庫存外觀屬性時呼叫。
COleControl::OnBackColorChanged 變更 stock BackColor 屬性時呼叫。
COleControl::OnBorderStyleChanged 變更 Stock BorderStyle 屬性時呼叫。
COleControl::OnClick 呼叫 以引發股票 Click 事件。
COleControl::OnClose 通知已呼叫的控制項 IOleControl::Close
COleControl::OnDoVerb 在執行控制項動詞之後呼叫。
COleControl::OnDraw 當要求重新繪製控制項時呼叫。
COleControl::OnDrawMetafile 當要求控制項使用中繼檔裝置內容重新繪製本身時,由容器呼叫。
COleControl::OnEdit 由容器呼叫 UI 啟動 OLE 控制項。
COleControl::OnEnabledChanged 變更庫存 Enabled 屬性時呼叫。
COleControl::OnEnumVerbs 由容器呼叫以列舉控制項的動詞。
COleControl::OnEventAdvise 當事件處理常式與控制項連接或中斷連線時呼叫。
COleControl::OnFontChanged 變更庫存字型屬性時呼叫。
COleControl::OnForeColorChanged 變更 stock ForeColor 屬性時呼叫。
COleControl::OnFreezeEvents 當控制項的事件凍結或解除凍結時呼叫。
COleControl::OnGetColorSet 通知已呼叫的控制項 IOleObject::GetColorSet
COleControl::OnGetControlInfo 提供容器的助憶鍵資訊。
COleControl::OnGetDisplayString 呼叫 以取得表示屬性值的字串。
COleControl::OnGetInPlaceMenu 要求將與容器功能表合併之控制項功能表的控制碼。
COleControl::OnGetNaturalExtent 覆寫 以擷取最接近建議大小和 ex帳篷模式的控制項顯示大小。
COleControl::OnGetPredefinedStrings 傳回字串,表示屬性的可能值。
COleControl::OnGetPredefinedValue 傳回對應至預先定義字串的值。
COleControl::OnGetViewExtent 覆寫 以擷取控制項顯示區域的大小(可用來啟用雙傳遞繪圖)。
COleControl::OnGetViewRect 覆寫 以將控制項的大小轉換成從特定位置開始的矩形。
COleControl::OnGetViewStatus 覆寫 以擷取控制項的檢視狀態。
COleControl::OnHideToolBars 當控制項停用 UI 時,由容器呼叫。
COleControl::OnInactiveMouseMove 覆寫 ,讓滑鼠指標下非使用中控制項的容器分派WM_MOUSEMOVE訊息至 控制項。
COleControl::OnInactiveSetCursor 覆寫 ,讓滑鼠指標下非使用中控制項的容器分派WM_SETCURSOR訊息至 控制項。
COleControl::OnKeyDownEvent 在已引發股票 KeyDown 事件之後呼叫。
COleControl::OnKeyPressEvent 在已引發股票 KeyPress 事件之後呼叫。
COleControl::OnKeyUpEvent 在已引發庫存 KeyUp 事件之後呼叫。
COleControl::OnMapPropertyToPage 指出要用於編輯屬性的屬性頁。
COleControl::OnMnemonic 按下控制項的助憶鍵時呼叫。
COleControl::OnProperties 叫用控制項的 「屬性」動詞時呼叫。
COleControl::OnQueryHitPoint 覆寫以查詢控制項的顯示是否與指定點重迭。
COleControl::OnQueryHitRect 覆寫 以查詢控制項的顯示是否與指定矩形中的任何點重迭。
COleControl::OnRenderData 由架構呼叫,以擷取指定格式的資料。
COleControl::OnRenderFileData 由架構呼叫,以從指定格式的檔案擷取資料。
COleControl::OnRenderGlobalData 由架構呼叫,以指定格式從全域記憶體擷取資料。
COleControl::OnResetState 將控制項的屬性重設為預設值。
COleControl::OnSetClientSite 通知已呼叫的控制項 IOleControl::SetClientSite
COleControl::OnSetData 以另一個值取代控制項的資料。
COleControl::OnSetExtent 在控制項的範圍變更之後呼叫。
COleControl::OnSetObjectRects 在控制項的維度變更之後呼叫。
COleControl::OnShowToolBars 當控制項已啟動 UI 時呼叫。
COleControl::OnTextChanged 變更庫存文字或 Caption 屬性時呼叫。
COleControl::OnWindowlessMessage 處理無視窗控制項的視窗訊息(非滑鼠和鍵盤訊息)。
COleControl::P arentToClient 將相對於容器來源的點轉譯為相對於控制項來源的點。
COleControl::P ostModalDialog 通知容器已關閉強制回應對話方塊。
COleControl::P reModalDialog 通知容器即將顯示強制回應對話方塊。
COleControl::RecreateControlWindow 終結並重新建立控制項的視窗。
COleControl::Refresh 強制重新繪出控制項的外觀。
COleControl::ReleaseCapture 釋放滑鼠擷取。
COleControl::ReleaseDC 釋放無視窗控制項容器的顯示裝置內容。
COleControl::ReparentControlWindow 重設控制項視窗的父代。
COleControl::ResetStockProps COleControl將庫存屬性初始化為其預設值。
COleControl::ResetVersion 將版本號碼初始化為指定的值。
COleControl::ScrollWindow 允許無視窗控制項在顯示器上捲動其就地使用中影像內的區域。
COleControl::SelectFontObject 將自訂 Font 屬性選取至裝置內容。
COleControl::SelectStockFont 將 [字型] 屬性選取為裝置內容。
COleControl::SerializeExtent 序列化或初始化 控制項的顯示空間。
COleControl::SerializeStockProps 序列化或初始化 COleControl 庫存屬性。
COleControl::SerializeVersion 序列化或初始化控制項的版本資訊。
COleControl::SetAppearance 設定 Stock Appearance 屬性的值。
COleControl::SetBackColor 設定 stock BackColor 屬性的值。
COleControl::SetBorderStyle 設定 stock BorderStyle 屬性的值。
COleControl::SetCapture 讓控制項的容器視窗代表控制項擁有滑鼠擷取。
COleControl::SetControlSize 設定 OLE 控制項的位置和大小。
COleControl::SetEnabled 設定 stock Enabled 屬性的值。
COleControl::SetFocus 讓控制項的容器視窗代表控制項擁有輸入焦點。
COleControl::SetFont 設定 stock Font 屬性的值。
COleControl::SetForeColor 設定 stock ForeColor 屬性的值。
COleControl::SetInitialSize 設定第一次顯示在容器中的 OLE 控制項大小。
COleControl::SetModifiedFlag 變更控制項的修改狀態。
COleControl::SetNotPermitted 表示編輯要求失敗。
COleControl::SetNotSupported 防止使用者修改控制項的屬性值。
COleControl::SetRectInContainer 設定控制項相對於其容器的矩形。
COleControl::SetText 設定 stock Text 或 Caption 屬性的值。
COleControl::ThrowError 表示 OLE 控制項中發生錯誤。
COleControl::TransformCoords 轉換容器與控制項之間的座標值。
COleControl::TranslateColor 將OLE_COLOR值轉換為 COLORRE光圈值。
COleControl::WillAmbientsBeValidDuringLoad 判斷下次載入控制項時,環境屬性是否可供使用。
COleControl::WindowProc 提供 物件的 COleControl Windows 程式。

受保護的方法

名稱 描述
COleControl::D rawContent 需要更新控制項的外觀時,由架構呼叫。
COleControl::D rawMetafile 使用中繼檔裝置內容時,由架構呼叫。
COleControl::IsInvokeAllowed 啟用自動化方法調用。
COleControl::SetInitialDataFormats 由架構呼叫,以初始化 控制項所支援的資料格式清單。

備註

衍生自 CWnd ,這個類別會繼承 Windows 視窗物件的所有功能,以及 OLE 特有的其他功能,例如事件引發,以及支援方法和屬性的能力。

OLE 控制項可以插入 OLE 容器應用程式中,並使用事件引發的雙向系統與容器通訊,並將方法和屬性公開給容器。 請注意,標準 OLE 容器只支援 OLE 控制項的基本功能。 它們無法支援 OLE 控制項的擴充功能。 當事件因為控制項中發生的特定動作而傳送至容器時,就會發生事件引發。 接著,容器會使用一組公開的方法和屬性,類似于 C++ 類別的成員函式和資料成員,與控制項通訊。 此方法可讓開發人員控制控制項的外觀,並在發生特定動作時通知容器。

無視窗控制項

OLE 控制項可以在沒有視窗的情況下就地使用。 無視窗控制項具有顯著的優點:

  • 無視窗控制項可以是透明和非矩形

  • 無視窗控制項可減少物件的實例大小和建立時間

控制項不需要視窗。 視窗所提供的服務可透過單一共用視窗(通常是容器的)和一些分派程式碼輕鬆提供。 擁有視窗主要是物件上不必要的複雜問題。

使用無視窗啟用時,容器(具有視窗)負責提供服務,否則由控制項自己的視窗提供。 例如,如果您的控制項需要查詢鍵盤焦點、查詢滑鼠擷取或取得裝置內容,這些作業會由容器管理。 COleControl無視窗作業成員函式會在容器上叫用這些作業。

啟用無視窗啟用時,容器會將輸入訊息委派給控制項的 IOleInPlaceObjectWindowless 介面(無視窗支援的 IOleInPlaceObject 延伸模組 )。 COleControl此介面的實作會在適當地調整滑鼠座標之後,透過控制項的訊息對應分派這些訊息。 您可以將對應的專案新增至訊息對應,以像一般視窗訊息一樣處理這些訊息。

在無視窗控制項中 COleControl ,您應該一律使用成員函式,而不是對應的 CWnd 成員函式或其相關的 Windows API 函式。

OLE 控制項物件只能在作用中時建立視窗,但非作用中轉換所需的工作量會上升,而轉換的速度會降低。 在某些情況下,這是個問題:例如,請考慮文字方塊的格線。 在資料行上下游標時,每個控制項都必須就地啟動,然後停用。 非使用中/主動轉換的速度將直接影響捲動速度。

如需開發 OLE 控制項架構的詳細資訊,請參閱 MFC ActiveX 控制項和 概觀:建立 MFC ActiveX 控制項程式 一文 如需優化 OLE 控制項的資訊,包括無視窗和無閃爍控制項,請參閱 MFC ActiveX 控制項:優化

繼承階層架構

CObject

CCmdTarget

CWnd

COleControl

需求

標頭: afxctl.h

COleControl::AmbientBackColor

傳回環境 BackColor 屬性的值。

OLE_COLOR AmbientBackColor();

傳回值

容器環境 BackColor 屬性的目前值,如果有的話。 如果不支援 屬性,此函式會傳回系統定義的 Windows 背景色彩。

備註

環境 BackColor 屬性可供所有控制項使用,並由容器定義。 請注意,不需要容器才能支援這個屬性。

COleControl::AmbientDisplayName

容器指派給控制項的名稱可用於向使用者顯示的錯誤訊息。

CString AmbientDisplayName();

傳回值

OLE 控制項的名稱。 預設值為零長度字串。

備註

請注意,不需要容器才能支援這個屬性。

COleControl::AmbientFont

傳回環境 Font 屬性的值。

LPFONTDISP AmbientFont();

傳回值

容器環境字型分派介面的指標。 預設值是 NULL。 如果傳回不等於 Null,您必須負責藉由呼叫其 IUnknown::Release 成員函式來釋放字型。

備註

環境 Font 屬性是由容器定義,可供所有控制項使用。請注意,不需要容器才能支援這個屬性。

COleControl::AmbientForeColor

傳回環境 ForeColor 屬性的值。

OLE_COLOR AmbientForeColor();

傳回值

容器環境 ForeColor 屬性的目前值,如果有的話。 如果不支援,此函式會傳回系統定義的 Windows 文字色彩。

備註

環境 ForeColor 屬性可供所有控制項使用,並由容器定義。 請注意,不需要容器才能支援這個屬性。

COleControl::AmbientLocaleID

傳回容器的地區設定識別碼。

LCID AmbientLocaleID();

傳回值

容器 LocaleID 屬性的值,如果有的話。 如果不支援這個屬性,則此函式會傳回 0。

備註

控制項可以使用 LocaleID 來調整其特定地區設定的使用者介面。 請注意,不需要容器才能支援這個屬性。

COleControl::AmbientAppearance

擷取控制項物件的目前外觀設定。

short AmbientAppearance();

傳回值

控制項的外觀:

  • 0 一般外觀

  • 1 3D 外觀

備註

呼叫此函式,以擷取控制項DISPID_AMBIENT_APPEARANCE屬性的目前值。

COleControl::AmbientScaleUnits

傳回容器所使用的單位類型。

CString AmbientScaleUnits();

傳回值

字串,包含容器的環境 ScaleUnits。 如果不支援此屬性,則此函式會傳回長度為零的字串。

備註

容器的環境 ScaleUnits 屬性可用來顯示以所選單位加上標籤的位置或維度,例如 twip 或公分。 請注意,不需要容器才能支援這個屬性。

COleControl::AmbientShowGrabHandles

判斷容器是否允許控制項在作用中時顯示本身的抓取控點。

BOOL AmbientShowGrabHandles();

傳回值

如果應該顯示抓取控點,則為非零;否則為 0。 如果不支援此屬性,則此函式會傳回非零。

備註

請注意,不需要容器才能支援這個屬性。

COleControl::AmbientShowHatching

判斷容器是否允許控制項在 UI 使用時以影線模式顯示本身。

BOOL AmbientShowHatching();

傳回值

如果應該顯示已孵化的圖樣,則為非零;否則為 0。 如果不支援此屬性,則此函式會傳回非零。

備註

請注意,不需要容器才能支援這個屬性。

COleControl::AmbientTextAlign

決定控制項容器慣用的環境文字對齊方式。

short AmbientTextAlign();

傳回值

容器環境 TextAlign 屬性的狀態。 如果不支援這個屬性,則此函式會傳回 0。

以下是有效的傳回值清單:

傳回值 意義
0 一般對齊方式(右邊的數位,左邊的文字)。
1 左對齊
2 置中
3 正確對齊

備註

這個屬性可供所有內嵌控制項使用,並由容器定義。 請注意,不需要容器才能支援這個屬性。

COleControl::AmbientUIDead

判斷容器是否希望控制項回應使用者介面動作。

BOOL AmbientUIDead();

傳回值

如果控制項應該回應使用者介面動作,則為非零;否則為 0。 如果不支援這個屬性,則此函式會傳回 0。

備註

例如,容器可能會在設計模式中將此設定為 TRUE。

COleControl::AmbientUserMode

判斷容器是否處於設計模式或使用者模式。

BOOL AmbientUserMode();

傳回值

如果容器處於使用者模式,則為非零;否則為 0 (在設計模式中)。 如果不支援此屬性,此函式會傳回 TRUE。

備註

例如,容器可能會在設計模式中將此設定為 FALSE。

COleControl::BoundPropertyChanged

表示系結屬性值已變更。

void BoundPropertyChanged(DISPID dispid);

參數

dispid
控制項系結屬性的分派識別碼。

備註

每當屬性的值變更時,都必須呼叫這個值,即使在未透過屬性 Set 方法進行變更的情況下也一定會呼叫。 特別留意對應至成員變數的系結屬性。 每當這類成員變數變更時, BoundPropertyChanged 都必須呼叫。

COleControl::BoundPropertyRequestEdit

要求 IPropertyNotifySink 介面的許可權,以變更 控制項所提供的系結屬性值。

BOOL BoundPropertyRequestEdit(DISPID dispid);

參數

dispid
控制項系結屬性的分派識別碼。

傳回值

如果允許變更,則為非零;否則為 0。 預設值為非零值。

備註

如果許可權遭到拒絕,控制項不得讓 屬性的值變更。 您可以忽略或失敗嘗試變更屬性值的動作來完成。

COleControl::ClientToParent

將 pPoint 座標轉譯為父座標。

virtual void ClientToParent(
    LPCRECT lprcBounds,
    LPPOINT pPoint) const;

參數

lprcBounds
容器內 OLE 控制項界限的指標。 不是工作區,而是整個控制項的區域,包括框線和捲軸。

pPoint
要轉譯為父系 (container) 座標之 OLE 工作區點的指標。

備註

在輸入 pPoint 上,相對於 OLE 控制項工作區的原點(控制項工作區左上角)。 在輸出 pPoint 上,相對於父系的原點(容器左上角)。

COleControl::ClipCaretRect

如果插入號矩形完全或部分由重迭、不透明的物件所覆蓋,則調整插入號矩形。

BOOL ClipCaretRect(LPRECT lpRect);

參數

lpRect
在輸入時,RECT 結構的指標 ,其中包含要調整的插入號區域。 在輸出上,調整的插入號區域,如果插入號矩形已完全涵蓋,則為 Null。

傳回值

如果成功則為非零;否則為 0。

備註

插入號是閃爍的線條、區塊或點陣圖,通常表示要插入文字或圖形的位置。

無視窗物件無法安全地顯示插入號,而不需要先檢查插入號是否部分或完全由重迭的物件隱藏。 為了使這一點成為可能,物件可以使用 ClipCaretRect 來取得調整的插入號(已縮減),以確保它符合裁剪區域。

建立插入號的物件應該將插入號矩形提交至 ClipCaretRect ,並使用插入號調整後的矩形。 如果插入號完全隱藏,這個方法會傳回 FALSE,在此情況下完全不應該顯示插入號。

COleControl::COleControl

建構 COleControl 物件。

COleControl();

備註

此函式通常不會直接呼叫。 相反地,OLE 控制項通常是由其類別處理站所建立。

COleControl::ControlInfoChanged

當控制項支援的助憶鍵集已變更時,請呼叫此函式。

void ControlInfoChanged();

備註

收到此通知後,控制項的容器會呼叫 IOleControl::GetControlInfo 來取得新的助憶鍵集。 請注意,不需要容器才能回應此通知。

COleControl::D isplayError

在處理庫存錯誤事件之後由架構呼叫(除非事件處理常式隱藏錯誤顯示)。

virtual void DisplayError(
    SCODE scode,
    LPCTSTR lpszDescription,
    LPCTSTR lpszSource,
    LPCTSTR lpszHelpFile,
    UINT nHelpID);

參數

scode
要報告的狀態碼值。 如需可能程式碼的完整清單,請參閱 ActiveX 控制項:進階主題一

lpszDescription
所報告錯誤的描述。

lpszSource
產生錯誤的模組名稱(通常是 OLE 控制項模組的名稱)。

lpszHelpFile
包含錯誤描述的說明檔名稱。

nHelpID
所回報錯誤的說明內容識別碼。

備註

預設行為會顯示訊息方塊,其中包含 lpszDescription 中包含的 錯誤描述。

覆寫此函式以自訂錯誤顯示方式。

COleControl::D oClick

模擬控制項上的滑鼠按一下動作。

void DoClick();

備註

如果控制項支援,則會呼叫可 COleControl::OnClick 覆寫的成員函式,並引發 Stock Click 事件。

基類支援 COleControl 此函式做為 stock 方法,稱為 DoClick。 如需詳細資訊,請參閱 ActiveX 控制項:方法 一文

COleControl::D oPropExchange

從持續性儲存體標記法載入或儲存控制項時,由架構呼叫,例如資料流程或屬性集。

virtual void DoPropExchange(CPropExchange* pPX);

參數

pPX
CPropExchange 物件的指標。 架構會提供這個 物件來建立屬性交換的內容,包括其方向。

備註

此函式通常會呼叫 PX_ 系列函式,以載入或儲存 OLE 控制項的特定使用者定義屬性。

如果 [控制項精靈] 已用來建立 OLE 控制項專案,則覆寫的此函式版本會使用對基類函式的呼叫,序列化所 COleControl 支援的庫存屬性。 COleControl::DoPropExchange 當您將使用者定義的屬性新增至 OLE 控制項時,您必須修改此函式來序列化新的屬性。 如需序列化的詳細資訊,請參閱 ActiveX 控制項:序列化 一文

COleControl::D oSuperclass小畫家

重新繪製已從 Windows 控制項子類別化的 OLE 控制項。

void DoSuperclassPaint(
    CDC* pDC,
    const CRect& rcBounds);

參數

pDC
控制項容器之裝置內容的指標。

rcBounds
要繪製控制項的區域。

備註

呼叫此函式以正確處理非作用中 OLE 控制項的繪製。 只有當 OLE 控制項子類別化 Windows 控制項,而且應該在控制項的函式中 OnDraw 呼叫時,才應該使用此函式。

如需此函式和子類別化 Windows 控制項的詳細資訊,請參閱 ActiveX 控制項:子類別化 Windows 控制項 一文

COleControl::D rawContent

需要更新控制項的外觀時,由架構呼叫。

void DrawContent(
    CDC* pDC,
    CRect& rc);

參數

pDC
裝置內容的指標。

鋼筋混凝土
要繪製的矩形區域。

備註

此函式會直接呼叫可 OnDraw 覆寫的函式。

COleControl::D rawMetafile

使用中繼檔裝置內容時,由架構呼叫。

void DrawMetafile(
    CDC* pDC,
    CRect& rc);

參數

pDC
中繼檔裝置內容的指標。

鋼筋混凝土
要繪製的矩形區域。

COleControl::EnableSimpleFrame

啟用 OLE 控制項的簡單框架特性。

void EnableSimpleFrame();

備註

這個特性可讓控制項支援其他控制項的視覺內含專案,但不能支援真正的 OLE 內含專案。 例如,內含數個控制項的群組方塊。 這些控制項未包含 OLE,但位於相同的群組方塊中。

COleControl::ExchangeExtent

序列化或初始化控制項範圍的狀態(其維度為 HIMETRIC 單位)。

BOOL ExchangeExtent(CPropExchange* pPX);

參數

pPX
CPropExchange 物件的指標 。 架構會提供這個 物件來建立屬性交換的內容,包括其方向。

傳回值

如果函式成功,則為非零;否則為 0。

備註

此函式通常由 的預設實作 COleControl::DoPropExchange 呼叫。

COleControl::ExchangeStockProps

序列化或初始化控制項的股票屬性狀態。

void ExchangeStockProps(CPropExchange* pPX);

參數

pPX
CPropExchange 物件的指標 。 架構會提供這個 物件來建立屬性交換的內容,包括其方向。

備註

此函式通常由 的預設實作 COleControl::DoPropExchange 呼叫。

COleControl::ExchangeVersion

序列化或初始化控制項版本資訊的狀態。

BOOL ExchangeVersion(
    CPropExchange* pPX,
    DWORD dwVersionDefault,
    BOOL bConvert = TRUE);

參數

pPX
CPropExchange 物件的指標。 架構會提供這個 物件來建立屬性交換的內容,包括其方向。

dwVersionDefault
控制項的目前版本號碼。

bConvert
指出在儲存時,持續性資料是否應該轉換成最新的格式,或以已載入的相同格式進行維護。

傳回值

函式的非零成功;否則為 0。

備註

一般而言,這會是 控制項覆寫 COleControl::DoPropExchange 所呼叫的第一個函式。 載入時,此函式會讀取永續性資料的版本號碼,並據以設定 CPropExchange 物件的 version 屬性 。 儲存時,此函式會寫入永續性資料的版本號碼。

如需持續性和版本控制的詳細資訊,請參閱 ActiveX 控制項:序列化 一文

COleControl::FireClick

當滑鼠按一下使用中控制項時,由架構呼叫。

void FireClick();

備註

如果此事件定義為自訂事件,您可以判斷事件何時引發。

若要自動引發 Click 事件,控制項的事件對應必須已定義 Stock Click 事件。

COleControl::FireDblClick

當滑鼠按兩下使用中控制項時,由架構呼叫。

void FireDblClick();

備註

如果此事件定義為自訂事件,您可以判斷事件何時引發。

若要自動引發 DblClick 事件,控制項的事件對應必須已定義 stock DblClick 事件。

COleControl::FireError

引發庫存錯誤事件。

void FireError(
    SCODE scode,
    LPCTSTR lpszDescription,
    UINT nHelpID = 0);

參數

scode
要報告的狀態碼值。 如需可能程式碼的完整清單,請參閱 ActiveX 控制項:進階主題一

lpszDescription
所報告錯誤的描述。

nHelpID
所回報錯誤的 [說明識別碼]。

備註

此事件可讓您在程式碼的適當位置發出訊號,指出控制項內發生錯誤。 不同于其他庫存事件,例如 Click 或 MouseMove,架構永遠不會引發 Error。

若要報告在屬性 get 函式、屬性集函式或自動化方法期間發生的錯誤,請呼叫 COleControl::ThrowError

OLE 控制項的 Stock Error 事件的實作會使用 SCODE 值。 如果您的控制項使用此事件,而且打算在 Visual Basic 4.0 中使用,您將會收到錯誤,因為 Visual Basic 中不支援 SCODE 值。

若要修正此問題,請手動變更 控制項 中的 SCODE 參數。ODL 檔案至 long 。 此外,任何使用 SCODE 參數的自訂事件、方法或屬性也會造成相同的問題。

COleControl::FireEvent

使用任意數目的選擇性引數,從控制項引發使用者定義的事件。

void AFX_CDECL FireEvent(
    DISPID dispid,
    BYTE* pbParams,
...);

參數

dispid
要引發之事件的分派識別碼。

pbParams
事件參數類型的描述項。

備註

通常不應該直接呼叫此函式。 相反地,您會在控制項類別宣告的事件對應區段中呼叫事件引發函式。

pbParams 引數是以空格分隔的 VTS_ 清單。 其中的一或多個值 (以空格分隔,而非逗號) 會指定函式的參數清單。 可能值如下所示:

符號 參數類型
VTS_COLOR OLE_COLOR
VTS_FONT IFontDisp*
VTS_HANDLE HWND
VTS_PICTURE IPictureDisp*
VTS_OPTEXCLUSIVE OLE_OPTEXCLUSIVE*
VTS_TRISTATE OLE_TRISTATE
VTS_XPOS_HIMETRIC OLE_XPOS_HIMETRIC
VTS_YPOS_HIMETRIC OLE_YPOS_HIMETRIC
VTS_XPOS_PIXELS OLE_XPOS_PIXELS
VTS_YPOS_PIXELS OLE_YPOS_PIXELS
VTS_XSIZE_PIXELS OLE_XSIZE_PIXELS
VTS_YSIZE_PIXELS OLE_XSIZE_PIXELS
VTS_XSIZE_HIMETRIC OLE_XSIZE_HIMETRIC
VTS_YSIZE_HIMETRIC OLE_XSIZE_HIMETRIC

注意

除了VTS_FONT和VTS_PICTURE之外,已針對所有變體類型定義其他變體常數,以提供變數資料常數的指標。 這些常數是使用VTS_P < CONSTANT-NAME > 慣例來命名。 例如,VTS_PCOLOR是VTS_COLOR常數的指標。

COleControl::FireKeyDown

當控制項為 UI 使用中時按下按鍵時,由架構呼叫。

void FireKeyDown(
    USHORT* pnChar,
    short nShiftState);

參數

pnChar
所按下按鍵之虛擬按鍵程式碼值的指標。 如需標準虛擬金鑰碼的清單,請參閱 Winuser.h

nShiftState
包含下列旗標的組合:

  • SHIFT_MASK動作期間按下 SHIFT 鍵。

  • CTRL_MASK動作期間按下 CTRL 鍵。

  • ALT_MASK動作期間按下 ALT 鍵。

備註

如果此事件定義為自訂事件,您可以判斷事件何時引發。

若要自動引發 KeyDown 事件,控制項的事件對應必須已定義庫存 KeyDown 事件。

COleControl::FireKeyPress

當自訂控制項在容器中為 UI 作用中時按下並放開按鍵時,由架構呼叫。

void FireKeyPress(USHORT* pnChar);

參數

pnChar
按下按鍵之字元值的指標。

備註

如果此事件定義為自訂事件,您可以判斷事件何時引發。

事件的收件者可能會修改 pnChar ,例如,將所有小寫字元轉換成大寫。 如果您想要檢查修改過的字元,請覆寫 OnKeyPressEvent

若要自動引發 KeyPress 事件,控制項的事件對應必須已定義庫存 KeyPress 事件。

COleControl::FireKeyUp

當自訂控制項在容器中為 UI 作用中時釋放索引鍵時,由架構呼叫。

void FireKeyUp(
    USHORT* pnChar,
    short nShiftState);

參數

pnChar
已發行金鑰之虛擬金鑰程式碼值的指標。 如需標準虛擬金鑰碼的清單,請參閱 Winuser.h

nShiftState
包含下列旗標的組合:

  • SHIFT_MASK動作期間按下 SHIFT 鍵。

  • CTRL_MASK動作期間按下 CTRL 鍵。

  • ALT_MASK動作期間按下 ALT 鍵。

備註

如果此事件定義為自訂事件,您可以判斷事件何時引發。

若要自動引發 KeyUp 事件,控制項的事件對應必須已定義庫存 KeyUp 事件。

COleControl::FireMouseDown

當滑鼠按鍵按下使用中自訂控制項時,由架構呼叫。

void FireMouseDown(
    short nButton,
    short nShiftState,
    OLE_XPOS_PIXELS x,
    OLE_YPOS_PIXELS y);

參數

nButton
按下滑鼠按鍵的數值。 它可以包含下列其中一個值:

  • LEFT_BUTTON按下滑鼠左鍵。

  • MIDDLE_BUTTON按下滑鼠中鍵。

  • RIGHT_BUTTON滑鼠右鍵已按下。

nShiftState
包含下列旗標的組合:

  • SHIFT_MASK動作期間按下 SHIFT 鍵。

  • CTRL_MASK動作期間按下 CTRL 鍵。

  • ALT_MASK動作期間按下 ALT 鍵。

x
按下滑鼠按鍵時游標的 X 座標。 座標相對於控制項視窗的左上角。

y
按下滑鼠按鍵時游標的 Y 座標。 座標相對於控制項視窗的左上角。

備註

如果此事件定義為自訂事件,您可以判斷事件何時引發。

若要自動引發 MouseDown 事件,控制項的事件對應必須已定義 Stock MouseDown 事件。

COleControl::FireMouseMove

當游標移至使用中的自訂控制項時,由架構呼叫。

void FireMouseMove(
    short nButton,
    short nShiftState,
    OLE_XPOS_PIXELS x,
    OLE_YPOS_PIXELS y);

參數

nButton
按下滑鼠按鍵的數值。 包含下列值的組合:

  • LEFT_BUTTON動作期間按下滑鼠左鍵。

  • MIDDLE_BUTTON動作期間按下滑鼠中間按鈕。

  • RIGHT_BUTTON動作期間按下滑鼠右鍵。

nShiftState
包含下列旗標的組合:

  • SHIFT_MASK動作期間按下 SHIFT 鍵。

  • CTRL_MASK動作期間按下 CTRL 鍵。

  • ALT_MASK動作期間按下 ALT 鍵。

x
資料指標的 X 座標。 座標相對於控制項視窗的左上角。

y
游標的 Y 座標。 座標相對於控制項視窗的左上角。

備註

如果此事件定義為自訂事件,您可以判斷事件何時引發。

若要自動引發 MouseMove 事件,控制項的事件對應必須已定義 Stock MouseMove 事件。

COleControl::FireMouseUp

當滑鼠按鍵在作用中的自訂控制項上放開時,由架構呼叫。

void FireMouseUp(
    short nButton,
    short nShiftState,
    OLE_XPOS_PIXELS x,
    OLE_YPOS_PIXELS y);

參數

nButton
放開滑鼠按鍵的數值。 它可以有下列其中一個值:

  • LEFT_BUTTON放開滑鼠左鍵。

  • MIDDLE_BUTTON放開滑鼠中鍵。

  • RIGHT_BUTTON放開滑鼠右鍵。

nShiftState
包含下列旗標的組合:

  • SHIFT_MASK動作期間按下 SHIFT 鍵。

  • CTRL_MASK動作期間按下 CTRL 鍵。

  • ALT_MASK動作期間按下 ALT 鍵。

x
放開滑鼠按鍵時游標的 X 座標。 座標相對於控制項視窗的左上角。

y
放開滑鼠按鍵時游標的 Y 座標。 座標相對於控制項視窗的左上角。

備註

如果此事件定義為自訂事件,您可以判斷事件何時引發。

若要自動引發 MouseUp 事件,控制項的事件對應必須已定義 Stock MouseUp 事件。

COleControl::FireReadyStateChange

使用目前就緒控制項狀態的值引發事件。

void FireReadyStateChange();

備註

就緒狀態可以是下列其中一個值:

名稱 描述
READYSTATE_UNINITIALIZED 預設初始化狀態
READYSTATE_LOADING 控制項目前正在載入其屬性
READYSTATE_LOADED 控制項已初始化
READYSTATE_INTERACTIVE 控制項有足夠的資料可供互動,但尚未載入所有非同步資料
READYSTATE_COMPLETE 控制項具有其所有資料

使用 GetReadyState 來判斷控制項目前的整備程度。

InternalSetReadyState 會將就緒狀態變更為所提供的值,然後呼叫 FireReadyStateChange

COleControl::GetActivationPolicy

改變支援 IPointerInactive 介面之控制項的預設啟用行為。

virtual DWORD GetActivationPolicy();

傳回值

POINTERINACTIVE 列舉中的旗標組合。 可能的旗標為:

名稱 描述
POINTERINACTIVE_ACTI加值稅EONENTRY 當滑鼠在滑鼠移動作業期間輸入物件時,應該就地啟始物件。
POINTERINACTIVE_DEACTI加值稅EONLEAVE 當滑鼠在滑鼠移動作業期間離開物件時,應該停用物件。
POINTERINACTIVE_ACTI加值稅EONDRAG 當滑鼠在拖放作業期間將滑鼠拖曳到該物件上時,應該就地啟始物件。

備註

IPointerInactive啟用介面時,容器會委派WM_SETCURSOR,並將訊息WM_MOUSEMOVE給它。 COleControl此介面的實作會在適當地調整滑鼠座標之後,透過控制項的訊息對應分派這些訊息。

每當容器收到WM_SETCURSOR或WM_MOUSEMOVE訊息,並將滑鼠指標放在支援 IPointerInactive 的非使用中物件上時,它應該在 介面上呼叫 GetActivationPolicy ,並從 POINTERINACTIVE 列舉傳回旗標。

您可以將對應的專案新增至訊息對應,以像一般視窗訊息一樣處理這些訊息。 在您的處理常式中,避免使用 m_hWnd 成員變數(或任何使用它的成員函式),而不先檢查其值是否為非 Null。

任何想要執行超過設定滑鼠游標和/或引發滑鼠移動事件的物件,例如提供特殊的視覺回饋,都應該傳回POINTERINACTIVE_ACTI加值稅EONENTRY旗標,並只在作用中時繪製意見反應。 如果物件傳回此旗標,容器應該立即啟動它,然後將觸發呼叫 的相同訊息轉送至 GetActivationPolicy

如果傳回POINTERINACTIVE_ACTI加值稅EONENTRY和POINTERINACTIVE_DEACTI加值稅EONLEAVE旗標,則只有在滑鼠停留物件時,才會啟始物件。 如果只傳回POINTERINACTIVE_ACTI加值稅EONENTRY旗標,則只有在滑鼠第一次進入物件時,才會啟始物件一次。

您也可以讓非作用中的控制項成為 OLE 拖放作業的目標。 這需要在使用者將物件拖曳到控制項上方時啟動控制項,以便將控制項的視窗註冊為置放目標。 若要在拖曳期間發生啟用,請傳回POINTERINACTIVE_ACTI加值稅EONDRAG旗標:

DWORD CMyAxCtrl::GetActivationPolicy()
{
   return POINTERINACTIVE_ACTIVATEONDRAG;
}

GetActivationPolicy 傳達的資訊不應由容器快取。 相反地,每次滑鼠進入非使用中物件時,都應該呼叫這個方法。

如果非作用中物件在滑鼠輸入時未要求就地啟動,則只要滑鼠指標停留在物件上,其容器應該呼叫 OnInactiveSetCursor ,以分派後續WM_SETCURSOR訊息給這個物件

啟用 IPointerInactive 介面通常表示您希望控制項能夠隨時處理滑鼠訊息。 若要在不支援 IPointerInactive 介面的容器中取得此行為,您必須在可見時一律啟動您的控制項,這表示控制項應該在其其他旗標中具有OLEMISC_ACTI加值稅EWHENVISIBLE旗標。 不過,若要防止此旗標在支援的 IPointerInactive 容器中生效,您也可以指定OLEMISC_IGNOREACTI加值稅EWHENVISIBLE旗標:

static const DWORD BASED_CODE _dwMyOleMisc =
    OLEMISC_ACTIVATEWHENVISIBLE |
    OLEMISC_IGNOREACTIVATEWHENVISIBLE |
    OLEMISC_SETCLIENTSITEFIRST |
    OLEMISC_INSIDEOUT |
    OLEMISC_CANTLINKINSIDE |
    OLEMISC_RECOMPOSEONRESIZE;

COleControl::GetAmbientProperty

取得容器的環境屬性值。

BOOL GetAmbientProperty(
    DISPID dispid,
    VARTYPE vtProp,
    void* pvProp);

參數

dwDispid
所需環境屬性的分派識別碼。

vtProp
Variant 類型標記,指定要在 pvProp 傳回之值的型別。

pvProp
將接收屬性值或傳回值之變數位址的指標。 此指標的實際類型必須符合 vtProp 指定的類型。

vtProp pvProp 的類型
VT_BOOL BOOL*
VT_BSTR CString*
VT_I2 short*
VT_I4 long*
VT_R4 float*
VT_R8 double*
VT_CY CY*
VT_COLOR OLE_COLOR*
VT_DISPATCH LPDISPATCH*
VT_FONT LPFONTDISP*

傳回值

如果支援環境屬性,則為非零;否則為 0。

備註

如果您使用 GetAmbientProperty 來擷取環境 DisplayName 和 ScaleUnits 屬性,請將 vtProp 設定為 VT_BSTR,並將 pvProp 設定 CString* 。 如果您要擷取環境 Font 屬性,請將 vtProp 設定為 VT_FONT,並將 pvProp 設定 為 LPFONTDISP*。

請注意,已為通用環境屬性提供函式,例如 AmbientBackColor AmbientFont

COleControl::GetAppearance

實作控制項股票外觀屬性的 Get 函式。

short GetAppearance ();

傳回值

如果成功,傳回值會將目前的外觀設定指定為 short (VT_I2) 值。 如果控制項的外觀是平面的,則此值為零,如果控制項的外觀為 3D,則為 1。

COleControl::GetBackColor

實作控制項的 Stock BackColor 屬性的 Get 函式。

OLE_COLOR GetBackColor();

傳回值

如果成功,傳回值會將目前的背景色彩指定為OLE_COLOR值。 這個值可以轉譯成具有 呼叫 TranslateColor 的 COLORRE光圈值。

COleControl::GetBorderStyle

實作控制項的 Stock BorderStyle 屬性的 Get 函式。

short GetBorderStyle();

傳回值

如果控制項有一般框線,則為 1;如果控制項沒有框線,則為 0。

COleControl::GetCapture

判斷物件是否 COleControl 具有滑鼠擷取。

CWnd* GetCapture();

傳回值

如果控制項已啟動且無視窗,則傳回控制項目前具有滑鼠擷取(如控制項的容器所決定),如果沒有擷取,則傳回 this Null。

否則,傳 CWnd 回具有滑鼠擷取的物件(與 CWnd::GetCapture 相同)。

備註

呼叫 SetCapture ,啟動的無視窗控制項會收到滑鼠擷取。

COleControl::GetClassID

由架構呼叫以擷取 控制項的 OLE 類別識別碼。

virtual HRESULT GetClassID(LPCLSID pclsid) = 0;

參數

pclsid
類別識別碼位置的指標。

傳回值

如果呼叫未成功,則為非零;否則為 0。

備註

通常由 IMPLEMENT_OLECREATE_EX 實作

COleControl::GetClientOffset

擷取控制項矩形區域左上角與其工作區左上角之間的差異。

virtual void GetClientOffset(long* pdxOffset, long* pdyOffset) const;

參數

pdxOffset
OLE 控制項工作區的水準位移指標。

pdyOffset
OLE 控制項工作區垂直位移的指標。

備註

OLE 控制項在其容器內有矩形區域。 控制項的工作區是控制項區域,不包括框線和捲軸。 擷取 GetClientOffset 的位移是控制項矩形區域左上角與其工作區左上角之間的差異。 如果您的控制項具有標準框線和捲軸以外的非用戶端元素,請覆寫此成員函式以指定位移。

COleControl::GetClientRect

擷取控制項工作區的大小。

virtual void GetClientRect(LPRECT lpRect) const;

參數

lpRect
RECT結構的指標,其中包含無視窗控制項工作區的維度;也就是說,控制項的大小減去視窗框線、框架、捲軸等等。 lpRect 參數會指出控制項用戶端矩形的大小,而不是其位置。

COleControl::GetClientSite

查詢物件,以取得其容器內目前用戶端月臺的指標。

LPOLECLIENTSITE GetClientSite();

傳回值

控制項容器中目前用戶端月臺的指標。

備註

傳回的指標指向 的 IOleClientSite 實例。 IOleClientSite容器所實作的介面是物件的內容檢視:其錨定在檔中的位置,其中會取得其儲存體、使用者介面和其他資源。

COleControl::GetControlFlags

擷取控制項旗標設定。

virtual DWORD GetControlFlags();

傳回值

ControlFlags 列舉中旗標的 ORed 組合:

enum ControlFlags {
    fastBeginPaint = 0x0001,
    clipPaintDC = 0x0002,
    pointerInactive = 0x0004,
    noFlickerActivate = 0x0008,
    windowlessActivate = 0x0010,
    canOptimizeDraw = 0x0020,
    };

備註

根據預設, GetControlFlags 會傳 fastBeginPaint | clipPaintDC 回 。

名稱 描述
fastBeginPaint 如果設定,請使用針對 OLE 控制項量身打造的 begin-paint 函式,而不是 Begin小畫家 API(預設設定)。
clipPaintDC 如果未設定,請停用 對 的 COleControl 呼叫 IntersectClipRect ,並取得較小的速度優勢。 如果您使用無視窗啟用,旗標就不會有任何作用。
pointerInactive 如果已設定,請在控制項非使用中時提供滑鼠互動,方法是啟用 COleControl 的 介面實 IPointerInactive 作,預設會停用此介面。
noFlickerActivate 如果設定,則排除額外的繪圖作業和隨附的視覺閃爍。 當您的控制項以非使用中和作用中狀態相同繪製本身時,請使用 。 如果您使用無視窗啟用,旗標就不會有任何作用。
windowlessActivate 如果設定,表示您的控制項使用無視窗啟用。
canOptimizeDraw 如果設定,表示如果容器支援,控制項將會執行優化的繪圖。

如需 OLE 控制項和其他優化的詳細資訊 GetControlFlags ,請參閱 ActiveX 控制項:優化

COleControl::GetControlSize

擷取 OLE 控制項視窗的大小。

void GetControlSize(
    int* pcx,
    int* pcy);

參數

pcx
以圖元指定控制項的寬度。

pcy
指定控制項的高度,以圖元為單位。

備註

請注意,控制項視窗的所有座標都相對於控制項的左上角。

COleControl::GetDC

提供無視窗物件,從其容器取得螢幕(或相容)裝置內容。

CDC* GetDC(
    LPCRECT lprcRect = NULL,
    DWORD dwFlags = OLEDC_PAINTBKGND);

參數

lprcRect
無視窗控制項想要在控制項的用戶端座標中重新繪製矩形的指標。 Null 表示完整的物件範圍。

dwFlags
繪製裝置內容的屬性。 選項包括:

  • OLEDC_NODRAW 指出物件不會使用裝置內容來執行任何繪圖,而只是為了取得顯示裝置的相關資訊。 容器應該只會傳遞視窗的 DC,而不需進一步處理。

  • OLEDC_PAINTBKGND要求容器在傳回 DC 之前繪製背景。 如果物件要求 DC 以重新繪製具有透明背景的區域,則物件應該使用此旗標。

  • OLEDC_OFFSCREEN通知容器物件想要轉譯成螢幕外點陣圖,然後應該複製到畫面。 物件在繪製作業即將執行的繪圖作業時,應該使用這個旗標來產生許多閃爍。 容器可以免費接受此要求。 不過,如果未設定此旗標,容器必須交回螢幕上的 DC。 這可讓物件執行直接螢幕作業,例如顯示選取專案(透過 XOR 作業)。

傳回值

如果成功,則為容器 CWnd 工作區的顯示裝置內容指標,否則傳回值為 Null。 顯示裝置內容可用於後續的 GDI 函式,以在容器視窗的工作區中繪製。

備註

必須呼叫 ReleaseDC 成員函式,才能在繪製之後釋放內容。 呼叫 GetDC 時,物件會傳遞想要在自己的用戶端座標中繪製的矩形。 GetDC 將這些轉譯為容器工作區的座標。 物件不應該要求比自己的工作區矩形更大的所需繪圖矩形,其大小可以使用 GetClientRect 擷取 。 這可防止物件不小心繪製它們不應該繪製的位置。

COleControl::GetEnabled

實作控制項的 Stock Enabled 屬性的 Get 函式。

BOOL GetEnabled();

傳回值

如果控制項已啟用,則為非零;否則為 0。

COleControl::GetExtendedControl

取得容器所維護之物件的指標,此物件代表具有擴充屬性集的 控制項。

LPDISPATCH GetExtendedControl();

傳回值

容器擴充控制項物件的指標。 如果沒有可用的物件,則值為 Null。

此物件可透過其 IDispatch 介面操作。 您也可以使用 QueryInterface 來取得 物件所提供的其他可用介面。 不過,不需要 物件才能支援一組特定的介面。 請注意,依賴容器擴充控制項物件的特定功能,會將控制項的可攜性限制為其他任意容器。

備註

呼叫此函式的函式負責在完成物件時釋放指標。 請注意,不需要容器才能支援這個物件。

COleControl::GetFocus

判斷物件是否 COleControl 具有焦點。

CWnd* GetFocus();

傳回值

如果控制項已啟動且無視窗,則傳回控制項目前具有鍵盤焦點(如控制項的容器所決定),如果控制項沒有焦點,則傳回 this Null。

否則,傳 CWnd 回具有焦點的物件(與 CWnd::GetFocus 相同)。

備註

呼叫 SetFocus ,啟動的無視窗控制項會收到焦點。

COleControl::GetFont

實作 stock Font 屬性的 Get 函式。

LPFONTDISP GetFont();

傳回值

控制項之 stock Font 屬性之字型發送介面的指標。

備註

請注意,呼叫端必須在完成時釋放 物件。 在 控制項的實作中,使用 InternalGetFont 來存取控制項的 Stock Font 物件。 如需在控制項中使用字型的詳細資訊,請參閱 ActiveX 控制項:在 ActiveX 控制項 中使用字型一文

COleControl::GetFontTextMetrics

測量控制項所擁有之任何 CFontHolder 物件的文字計量。

void GetFontTextMetrics(
    LPTEXTMETRIC lptm,
    CFontHolder& fontHolder);

參數

lptm
TEXTMETRIC 結構的指標。

fontHolder
CFontHolder 物件的參考。

備註

您可以使用 COleControl::SelectFontObject 函式來選取 這類字型 GetFontTextMetrics會初始化 lptm 所指向的結構, TEXTMETRIC 其中包含成功時,其字型的有效 fontHolder 計量資訊,或在未成功時以零填滿結構。 當您繪製控制項時,您應該使用此函式,而不是 GetTextMetrics ,因為控制項,就像任何內嵌的 OLE 物件一樣,可能需要將自己轉譯成中繼檔。

呼叫 SelectFontObject 函式時,會 TEXTMETRIC 重新整理預設字型 的結構。 您應該只在選取 stock Font 屬性之後呼叫 GetFontTextMetrics ,以確保其提供的資訊有效。

COleControl::GetForeColor

實作 stock ForeColor 屬性的 Get 函式。

OLE_COLOR GetForeColor();

傳回值

如果成功,傳回值會將目前的前景色彩指定為OLE_COLOR值。 這個值可以轉譯成 具有 呼叫 TranslateColor 的 COLORREF 值。

COleControl::GetHwnd

實作 stock hWnd 屬性的 Get 函式。

OLE_HANDLE GetHwnd();

傳回值

如果有任何,則為 OLE 控制項的視窗控制碼;否則為 Null。

COleControl::GetMessageString

由架構呼叫以取得簡短字串,描述 nID 識別功能表項目的目的。

virtual void GetMessageString(
    UINT nID,
    CString& rMessage) const;

參數

nID
功能表項目識別碼。

rMessage
CString 物件的參考 ,會透過該物件傳回字串。

備註

這可用來取得在醒目提示功能表項目時顯示在狀態列中的訊息。 預設實作會嘗試載入 nID 識別的字串資源。

COleControl::GetNotSupported

防止使用者存取控制項的屬性值。

void GetNotSupported();

備註

呼叫此函式來取代控制項使用者擷取屬性的任何屬性的 Get 函式。 其中一個範例是只寫入的屬性。

COleControl::GetReadyState

傳回控制項的整備狀態。

long GetReadyState();

傳回值

控制項的整備狀態,下列其中一個值:

名稱 描述
READYSTATE_UNINITIALIZED 預設初始化狀態
READYSTATE_LOADING 控制項目前正在載入其屬性
READYSTATE_LOADED 控制項已初始化
READYSTATE_INTERACTIVE 控制項有足夠的資料可供互動,但尚未載入所有非同步資料
READYSTATE_COMPLETE 控制項具有其所有資料

備註

大多數簡單的控制項都不需要區分 LOADED 和 INTERACTIVE。 不過,支援資料路徑屬性的控制項可能尚未準備好以非同步方式接收某些資料,才能成為互動式控制項。 控制項應該嘗試儘快變成互動式。

COleControl::GetRectInContainer

取得控制項矩形相對於容器的座標,以裝置單位表示。

BOOL GetRectInContainer(LPRECT lpRect);

參數

lpRect
將複製控制項座標之矩形結構的指標。

傳回值

如果控制項為就地作用中,則為非零;否則為 0。

備註

只有在控制項就地作用中時,矩形才有效。

COleControl::GetStockTextMetrics

測量控制項股票 Font 屬性的文字計量,其可使用 SelectStockFont 函式來選取

void GetStockTextMetrics(LPTEXTMETRIC lptm);

參數

lptm
TEXTMETRIC 結構的指標

備註

GetStockTextMetrics 式會初始化 TEXTMETRIC lptm 指向的結構,如果成功,則會使用有效的計量資訊,或在未成功時以零填滿結構。 在繪製控制項時,請使用這個函式, 而不是 GetTextMetrics ,因為控制項,就像任何內嵌的 OLE 物件一樣,可能需要將自己轉譯成中繼檔。

呼叫 函式時 SelectStockFont ,會 TEXTMETRIC 重新整理預設字型的結構。 只有在選取股票字型以確保其提供的資訊有效之後,才應該呼叫此函式。

COleControl::GetText

實作 stock Text 或 Caption 屬性的 Get 函式。

BSTR GetText();

傳回值

控制項文字字串的目前值,如果沒有字串,則為零長度字串。

注意

如需 BSTR 資料類型的詳細資訊,請參閱 宏和全域中的資料類型 一節。

備註

請注意,此函式的呼叫端必須在傳回的字串上呼叫 SysFreeString ,才能釋放資源。 在 控制項的實作中,使用 InternalGetText 來存取控制項的股票 Text 或 Caption 屬性。

COleControl::GetWindowlessDropTarget

當您希望無視窗控制項成為 OLE 拖放作業的目標時,請覆寫 GetWindowlessDropTarget

virtual IDropTarget* GetWindowlessDropTarget();

傳回值

物件的 IDropTarget 介面指標。 因為沒有視窗,所以無視窗物件無法註冊 IDropTarget 介面。 不過,若要參與拖放,無視窗物件仍然可以實作 介面,並在 中 GetWindowlessDropTarget 傳回它。

備註

通常這會需要將控制項的視窗登錄為置放目標。 但是,由於控制項沒有自己的視窗,因此容器會使用自己的視窗做為置放目標。 控制項只需要提供介面的 IDropTarget 實作,容器可以在適當的時間委派呼叫。 例如:

IDropTarget *CMyAxCtrl::GetWindowlessDropTarget()
{
   m_xDropTarget.AddRef();
   return &m_xDropTarget;
}

COleControl::InitializeIIDs

通知控制項將使用之 IID 的基類。

void InitializeIIDs(
    const IID* piidPrimary,
    const IID* piidEvents);

參數

piidPrimary
控制項主要分派介面之介面識別碼的指標。

piidEvents
控制項事件介面之介面識別碼的指標。

備註

在控制項的建構函式中呼叫此函式,以通知控制項將使用之介面識別碼的基類。

COleControl::InternalGetFont

存取控制項的 stock Font 屬性

CFontHolder& InternalGetFont();

傳回值

包含 stock Font 物件的 CFontHolder 物件的參考

COleControl::InternalGetText

存取控制項的內含文字或 Caption 屬性。

const CString& InternalGetText();

傳回值

控制項文字字串的參考。

COleControl::InternalSetReadyState

設定控制項的整備狀態。

void InternalSetReadyState(long lNewReadyState);

參數

lNewReadyState
要為控制項設定的整備狀態,下列其中一個值:

名稱 描述
READYSTATE_UNINITIALIZED 預設初始化狀態
READYSTATE_LOADING 控制項目前正在載入其屬性
READYSTATE_LOADED 控制項已初始化
READYSTATE_INTERACTIVE 控制項有足夠的資料可供互動,但尚未載入所有非同步資料
READYSTATE_COMPLETE 控制項具有其所有資料

備註

大多數簡單的控制項都不需要區分 LOADED 和 INTERACTIVE。 不過,支援資料路徑屬性的控制項可能尚未準備好以非同步方式接收某些資料,才能成為互動式控制項。 控制項應該嘗試儘快變成互動式。

COleControl::InvalidateControl

強制控制項重新繪製本身。

void InvalidateControl(
    LPCRECT lpRect = NULL,
    BOOL bErase = TRUE);

參數

lpRect
要失效之控制項區域的指標。

bErase
指定在處理更新區域時,是否要清除更新區域內的背景。

備註

如果 lpRect 有 Null 值,則會重新繪製整個控制項。 如果 lpRect 不是 Null,這表示要失效之控制項矩形的部分。 如果控制項沒有視窗,或目前沒有作用中,則會忽略矩形,並且呼叫用戶端網站的 IAdviseSink::OnViewChange 成員函式。 使用此函式, CWnd::InvalidateRect 而不是 或 InvalidateRect

COleControl::InvalidateRgn

使容器視窗在指定區域內的工作區失效。

void InvalidateRgn(CRgn* pRgn, BOOL bErase = TRUE);

參數

pRgn
CRgn 物件的指標 ,識別要失效之 OLE 物件的顯示區域,以包含視窗的用戶端座標。 如果此參數為 Null,範圍就是整個物件。

bErase
指定是否要清除無效區域內的背景。 如果為 TRUE,則會清除背景。 如果為 FALSE,背景會維持不變。

備註

這可用來重新繪製容器內的無視窗控制項。 當傳送下一 個WM_PAINT 訊息時,不正確區域以及更新區域中的所有其他區域都會標示為繪製。

如果 更新區域的任何部分的 bErase 為 TRUE,則會清除整個區域中的背景,而不只是在指定的部分。

COleControl::IsConvertingVBX

允許特製化載入 OLE 控制項。

BOOL IsConvertingVBX();

傳回值

如果要轉換控制項,則為非零;否則為 0。

備註

將使用 VBX 控制項的表單轉換成使用 OLE 控制項的表單時,可能需要特殊載入 OLE 控制項的程式碼。 例如,如果您要載入 OLE 控制項的實例,您可能會在 中 DoPropExchange 呼叫 PX_Font

PX_Font(pPX, _T("Font"), *m_pMyFont, &DefaultFont);

不過,VBX 控制項沒有 Font 物件;每個字型屬性都會個別儲存。 在此情況下,您會使用 IsConvertingVBX 來區分這兩個案例:

if (!IsConvertingVBX())
{
   PX_Font(pPX, _T("Font"), *m_pMyFont, &DefaultFont);
}
else
{
   PX_String(pPX, _T("FontName"), tempString, DefaultName);
   m_pMyFont->m_pFont->put_Name(tempString.AllocSysString());
   PX_Bool(pPX, _T("FontUnderline"), tempBool, DefaultValue);
   m_pMyFont->m_pFont->put_Underline(tempBool);
}

另一個案例是,如果您的 VBX 控制項儲存了專屬的二進位資料(在其VBM_SAVEPROPERTY訊息處理常式中),而您的 OLE 控制項會以不同的格式儲存其二進位資料。 如果您想要讓 OLE 控制項與 VBX 控制項回溯相容,您可以使用 函式來讀取舊格式和新格式 IsConvertingVBX ,方法是區分正在載入 VBX 控制項或 OLE 控制項。

在控制項的 函式中 DoPropExchange ,您可以檢查此條件,如果為 true,請執行此轉換特有的載入程式碼(例如先前的範例)。 如果控制項未轉換,您可以執行一般載入程式碼。 這項功能僅適用于從 VBX 對應專案轉換的控制項。

COleControl::IsInvokeAllowed

啟用自動化方法調用。

BOOL IsInvokeAllowed(DISPID dispid);

傳回值

如果控制項已初始化,則為非零;否則為 0。

備註

架構的呼叫 IsInvokeAllowed 實作 IDispatch::Invoke ,以判斷是否可以叫用指定的函式(由 dispid 識別)。 OLE 控制項的預設行為是只允許在初始化控制項時叫用自動化方法;不過, IsInvokeAllowed 是虛擬函式,必要時可能會覆寫 (例如,當控制項用作自動化伺服器時)。

COleControl::IsModified

判斷控制項的狀態是否已修改。

BOOL IsModified();

傳回值

如果控制項的狀態自上次儲存後已修改,則為非零;否則為 0。

備註

當屬性變更值時,會修改控制項的狀態。

COleControl::IsOptimizedDraw

判斷容器是否支援目前繪圖作業的優化繪圖。

BOOL IsOptimizedDraw();

傳回值

如果容器支援目前繪圖作業的優化繪圖,則為 TRUE;否則為 FALSE。

備註

如果支援優化的繪圖,則當繪圖完成時,控制項不需要選取舊物件(手寫筆、筆刷、字型等)到裝置內容。

COleControl::IsSubclassedControl

由架構呼叫,以判斷控制項是否子類別化 Windows 控制項。

virtual BOOL IsSubclassedControl();

傳回值

如果控制項為子類別,則為非零;否則為 0。

備註

如果您的 OLE 控制項子類別是 Windows 控制項,您必須覆寫此函式並傳回 TRUE。

COleControl::Load

重設以非同步方式載入的任何先前資料,並起始控制項非同步屬性的新載入。

void Load(LPCTSTR strNewPath, CDataPathProperty& prop);

參數

strNewPath
字串的指標,包含參考非同步控制屬性絕對位置的路徑。

支柱
作非同步控制項屬性的 CDataPathProperty 物件。

COleControl::LockInPlaceActive

防止容器停用您的控制項。

BOOL LockInPlaceActive(BOOL bLock);

參數


如果控制項的就地作用中狀態要鎖定,則為 TRUE;如果要解除鎖定,則為 FALSE。

傳回值

如果鎖定成功,則為非零;否則為 0。

備註

請注意,完成時,控制項的每個鎖定都必須與控制項的解除鎖定配對。 您應該只在短時間內鎖定控制項,例如引發事件時。

COleControl::OnAmbientPropertyChange

當容器的環境屬性變更值時,由架構呼叫。

virtual void OnAmbientPropertyChange(DISPID dispid);

參數

dispID
已變更之環境屬性的分派識別碼,如果有多個屬性已變更,則為DISPID_UNKNOWN。

COleControl::OnAppearanceChanged

當庫存外觀屬性值變更時,由架構呼叫。

virtual void OnAppearanceChanged ();

備註

如果您想要在此屬性變更之後通知,請覆寫此函式。 預設實作會呼叫 InvalidateControl

COleControl::OnBackColorChanged

當 stock BackColor 屬性值變更時,由架構呼叫。

virtual void OnBackColorChanged();

備註

如果您想要在此屬性變更之後通知,請覆寫此函式。 預設實作會呼叫 InvalidateControl

COleControl::OnBorderStyleChanged

當 stock BorderStyle 屬性值變更時,由架構呼叫。

virtual void OnBorderStyleChanged();

備註

預設實作會呼叫 InvalidateControl

如果您想要在此屬性變更之後通知,請覆寫此函式。

COleControl::OnClick

按一下滑鼠按鍵或叫用 DoClick stock 方法時,由架構呼叫。

virtual void OnClick(USHORT iButton);

參數

iButton
滑鼠按鍵的索引。 可以有下列其中一個值:

  • LEFT_BUTTON按一下滑鼠左鍵。

  • MIDDLE_BUTTON按一下滑鼠中間按鈕。

  • RIGHT_BUTTON按一下滑鼠右鍵。

備註

預設實作會呼叫 COleControl::FireClick

覆寫此成員函式以修改或擴充預設處理。

COleControl::OnClose

當容器呼叫 控制項的 IOleControl::Close 函式時,由架構呼叫。

virtual void OnClose(DWORD dwSaveOption);

參數

dwSaveOption
旗標,指出是否應該在載入之前儲存物件。 有效值為:

  • OLECLOSE_SAVEIFDIRTY

  • OLECLOSE_NOSAVE

  • OLECLOSE_PROMPTSAVE

備註

根據預設, OnClose 如果控制項物件已修改,而且 dwSaveOption 是OLECLOSE_SAVEIFDIRTY或OLECLOSE_PROMPTSAVE,則會儲存它。

COleControl::OnDoVerb

當容器呼叫成員函式時,由架構呼叫 IOleObject::DoVerb

virtual BOOL OnDoVerb(
    LONG iVerb,
    LPMSG lpMsg,
    HWND hWndParent,
    LPCRECT lpRect);

參數

iVerb
要叫用之控制項動詞的索引。

lpMsg
導致叫用動詞動詞的 Windows 訊息指標。

hWndParent
控制項父視窗的控制碼。 如果動詞執行會建立視窗(或視窗), 則 hWndParent 應該當做父代使用。

lpRect
將複製控制項相對於容器之控制項座標的 RECT 結構的指標。

傳回值

如果呼叫成功,則為非零;否則為 0。

備註

預設實作會使用ON_OLEVERB和ON_STDOLEVERB訊息對應專案來判斷要叫用的適當函式。

覆寫此函式以變更動詞的預設處理。

COleControl::OnDraw

由架構呼叫,以使用指定的裝置內容,在指定的周框中繪製 OLE 控制項。

virtual void OnDraw(
    CDC* pDC,
    const CRect& rcBounds,
    const CRect& rcInvalid);

參數

pDC
繪圖所在的裝置內容。

rcBounds
控制項的矩形區域,包括框線。

rcInvalid
無效之控制項的矩形區域。

備註

OnDraw通常針對螢幕顯示呼叫,以 pDC 的形式 傳遞螢幕裝置內容。 rcBounds 參數會識別目標裝置內容中的矩形(相對於其目前的對應模式)。 rcInvalid 參數是不正確實際矩形。 在某些情況下,這會是 比 rcBounds 較小的區域。

COleControl::OnDrawMetafile

由架構呼叫,以使用指定的中繼檔裝置內容,在指定的周框中繪製 OLE 控制項。

virtual void OnDrawMetafile(
    CDC* pDC,
    const CRect& rcBounds);

參數

pDC
繪圖所在的裝置內容。

rcBounds
控制項的矩形區域,包括框線。

備註

預設實作會呼叫 OnDraw 函式。

COleControl::OnEdit

讓控制項啟動 UI。

virtual BOOL OnEdit(
    LPMSG lpMsg,
    HWND hWndParent,
    LPCRECT lpRect);

參數

lpMsg
叫用動詞的 Windows 訊息指標。

hWndParent
控制項父視窗的控制碼。

lpRect
容器中控制項所使用之矩形的指標。

傳回值

如果呼叫成功,則為非零;否則為 0。

備註

這與叫用控制項的OLEIVERB_UIACTI加值稅E動詞具有相同的效果。

此函式通常用於ON_OLEVERB訊息對應專案的處理常式函式。 這可在控制項的 [物件] 功能表上使用 「編輯」動詞。 例如:

ON_OLEVERB(AFX_IDS_VERB_EDIT, OnEdit)

COleControl::OnEnabledChanged

當庫存 Enabled 屬性值變更時,由架構呼叫。

virtual void OnEnabledChanged();

備註

如果您想要在此屬性變更之後通知,請覆寫此函式。 預設實作會呼叫 InvalidateControl

COleControl::OnEnumVerbs

當容器呼叫成員函式時,由架構呼叫 IOleObject::EnumVerbs

virtual BOOL OnEnumVerbs(LPENUMOLEVERB* ppenumOleVerb);

參數

ppenumOleVerb
列舉控制項動詞命令的物件指標 IEnumOLEVERB

傳回值

如果有動詞可用,則為非零;否則為 0。

備註

預設實作會列舉訊息對應中的ON_OLEVERB專案。

覆寫此函式以變更列舉動詞的預設方式。

COleControl::OnEventAdvise

當事件處理常式與 OLE 控制項連線或中斷連線時,由架構呼叫。

virtual void OnEventAdvise(BOOL bAdvise);

參數

bAdvise
TRUE 表示事件處理常式已連線至 控制項。 FALSE 表示事件處理常式已與控制項中斷連線。

COleControl::OnFontChanged

當 stock Font 屬性值變更時,由架構呼叫。

virtual void OnFontChanged();

備註

預設實作會呼叫 COleControl::InvalidateControl 。 如果控制項是子類別化 Windows 控制項,預設實作也會將WM_SETFONT訊息傳送至控制項的視窗。

如果您想要在此屬性變更之後通知,請覆寫此函式。

範例

void CMyAxCtrl::OnFontChanged()
{
   // Always set it to the container's font
   if (m_MyEdit.m_hWnd != NULL)
   {
      IFontDisp *pFontDisp = NULL;
      IFont *pFont = NULL;
      HRESULT hr;

      // Get the container's FontDisp interface
      pFontDisp = AmbientFont();
      if (pFontDisp)
      {
         hr = pFontDisp->QueryInterface(IID_IFont, (LPVOID*)&pFont);
         if (FAILED(hr))
         {
            pFontDisp->Release();
            return;
         }
      }

      HFONT hFont = NULL;
      if (pFont)
      {
         pFont->get_hFont(&hFont);
         m_MyEdit.SendMessage(WM_SETFONT, (WPARAM)hFont, 0L);
      }

      pFontDisp->Release();
   }

   // Invalidate the control
   m_MyEdit.Invalidate();
   m_MyEdit.UpdateWindow();

   COleControl::OnFontChanged();
}

COleControl::OnForeColorChanged

當 Stock ForeColor 屬性值變更時,由架構呼叫。

virtual void OnForeColorChanged();

備註

預設實作會呼叫 InvalidateControl

如果您想要在此屬性變更之後通知,請覆寫此函式。

COleControl::OnFreezeEvents

容器呼叫 之後,由架構呼叫 IOleControl::FreezeEvents

virtual void OnFreezeEvents(BOOL bFreeze);

參數

bFreeze
如果控制項的事件處理已凍結,則為 TRUE;否則為 FALSE。

備註

預設實作不做任何動作。

如果您想要在事件處理凍結或解除凍結時執行其他行為,請覆寫此函式。

COleControl::OnGetColorSet

當容器呼叫成員函式時,由架構呼叫 IViewObject::GetColorSet

virtual BOOL OnGetColorSet(
    DVTARGETDEVICE* ptd,
    HDC hicTargetDev,
    LPLOGPALETTE* ppColorSet);

參數

ptd
指向應該轉譯圖片的目標裝置。 如果此值為 Null,則圖片應該轉譯為預設目標裝置,通常是顯示裝置。

hicTargetDev
指定 ptd 指示之目標裝置上的資訊內容。 此參數可以是裝置內容,但不一定是裝置內容。 如果 ptd 為 Null,hicTargetDev 也應該是 Null。

ppColorSet
應複製一組色彩的位置指標。 如果函式未傳回色彩集,則會傳回 Null。

傳回值

如果傳回有效的色彩集,則為非零;否則為 0。

備註

容器會呼叫此函式,以取得繪製 OLE 控制項所需的所有色彩。 容器可以使用與設定整體調色盤所需的色彩搭配取得的色彩集。 預設實作會傳回 FALSE。

覆寫此函式以執行此要求的任何特殊處理。

COleControl::OnGetControlInfo

當控制項的容器要求控制項的相關資訊時,由架構呼叫。

virtual void OnGetControlInfo(LPCONTROLINFO pControlInfo);

參數

pControlInfo
要填入之 CONTROLINFO 結構的指標。

備註

這項資訊主要是控制項助憶鍵的描述。 預設實作會 以預設資訊填滿 pControlInfo

如果您的控制項需要處理助憶鍵,請覆寫此函式。

COleControl::OnGetDisplayString

由架構呼叫以取得字串,表示 dispid 識別之屬性的目前值。

virtual BOOL OnGetDisplayString(
    DISPID dispid,
    CString& strValue);

參數

dispid
控制項屬性的分派識別碼。

strValue
CString 物件的參考 ,會透過該物件傳回字串。

傳回值

如果 strValue 中 傳回字串,則為非零, 否則為 0。

備註

如果您的控制項具有無法直接轉換成字串的屬性,而且您希望屬性的值顯示在容器提供的屬性瀏覽器中,請覆寫此函式。

COleControl::OnGetInPlaceMenu

當控制項啟動 UI 以取得要合併至容器現有功能表的功能表時,由架構呼叫。

virtual HMENU OnGetInPlaceMenu();

傳回值

控制項功能表的控制碼,如果控制項沒有,則為 Null。 預設實作會傳回 Null。

備註

如需合併 OLE 資源的詳細資訊,請參閱功能表和資源 (OLE) 一文

COleControl::OnGetNaturalExtent

由架構呼叫,以回應容器 IViewObjectEx::GetNaturalExtent 的要求。

virtual BOOL OnGetNaturalExtent(
    DWORD dwAspect,
    LONG lindex,
    DVTARGETDEVICE* ptd,
    HDC hicTargetDev,
    DVEXTENTINFO* pExtentInfo,
    LPSIZEL psizel);

參數

dwAspect
指定物件要進行表示的方式。 標記法包括內容、圖示、縮圖或列印檔案。 有效值取自列舉 DVASPECT 或DVASPECT2。

lindex
感興趣的物件部分。 目前只有 -1 有效。

ptd
指向 DVTARGETDEVICE 結構,定義應該傳回物件大小的目標裝置。

hicTargetDev
指定由 ptd 參數指示 的目標裝置資訊內容,物件可以從中擷取裝置計量及測試裝置的功能。 如果 ptd 為 Null,物件應該忽略 hicTargetDev 參數中的 值。

pExtentInfo
指向 DVEXTENTINFO 指定調整大小資料的 結構。 結構 DVEXTENTINFO 為:

typedef struct tagExtentInfo
{
    UINT cb;
    DWORD dwExtentMode;
    SIZEL sizelProposed;
}   DVEXTENTINFO;

結構成員 dwExtentMode 可以接受兩個值的其中一個:

  • DVEXTENT_CONTENT詢問控制項的大小應該如何完全符合內容(貼齊大小)

  • DVEXTENT_INTEGRAL調整大小時,將建議的大小傳遞至控制

psizel
指向控制項所傳回的資料大小調整。 針對未調整的任何維度,傳回的大小調整資料會設定為 -1。

傳回值

如果成功傳回或調整大小,則為非零;否則為 0。

備註

覆寫此函式,以傳回結構中最接近建議大小和 ex帳篷模式 DVEXTENTINFO 的物件顯示大小。 預設實作會傳回 FALSE,而且不會調整大小。

COleControl::OnGetPredefinedStrings

由架構呼叫,以取得一組預先定義的字串,代表屬性的可能值。

virtual BOOL OnGetPredefinedStrings(
    DISPID dispid,
    CStringArray* pStringArray,
    CDWordArray* pCookieArray);

參數

dispid
控制項屬性的分派識別碼。

pStringArray
要填入傳回值的字串陣列。

pCookieArray
要填入傳回值的 DWORD 陣列。

傳回值

如果元素已新增至 pStringArray pCookieArray ,則為非零。

備註

如果您的控制項具有一組可由字串表示的可能值,請覆寫此函式。 針對每個新增至 pStringArray 的專案,您應該將對應的 「cookie」 元素新增至 pCookieArray。 這些「Cookie」值稍後可能會由架構傳遞至 函 COleControl::OnGetPredefinedValue 式。

COleControl::OnGetPredefinedValue

由架構呼叫,以取得對應至先前由 覆寫 COleControl::OnGetPredefinedStrings 傳回之其中一個預先定義字串的值。

virtual BOOL OnGetPredefinedValue(
    DISPID dispid,
    DWORD dwCookie,
    VARIANT* lpvarOut);

參數

dispid
控制項屬性的分派識別碼。

dwCookie
先前由 覆寫 傳回的 COleControl::OnGetPredefinedStrings Cookie 值。

lpvarOut
VARIANT將傳回屬性值的結構指標。

傳回值

如果已在 lpvarOut 傳回值,則為非零,否則為 0。

COleControl::OnGetViewExtent

由架構呼叫,以回應容器的 IViewObject2::GetExtent 要求。

virtual BOOL OnGetViewExtent(
    DWORD dwDrawAspect,
    LONG lindex,
    DVTARGETDEVICE* ptd,
    LPSIZEL lpsizel);

參數

dwDrawAspect
描述要顯示物件之表單或層面的 DWORD。 有效值取自列舉 DVASPECT 或DVASPECT2。

lindex
感興趣的物件部分。 目前只有 -1 有效。

ptd
指向 DVTARGETDEVICE 結構,定義應該傳回物件大小的目標裝置。

lpsizel
指向傳回物件大小的位置。

傳回值

如果成功傳回範圍資訊,則為非零;否則為 0。

備註

如果您的控制項使用雙階段繪圖,且其不透明和透明元件有不同的維度,請覆寫此函式。

COleControl::OnGetViewRect

由架構呼叫,以回應容器 IViewObjectEx::GetRect 的要求。

virtual BOOL OnGetViewRect(DWORD dwAspect, LPRECTL pRect);

參數

dwAspect
描述要顯示物件之表單或層面的 DWORD。 有效值取自列舉 DVASPECT 或DVASPECT2:

  • DVASPECT_CONTENT整個物件的周框。 物件原點的左上角和大小等於 所 GetViewExtent 傳回的範圍。

  • DVASPECT_OPAQUE具有矩形不透明區域的 物件會傳回該矩形。 其他失敗。

  • DVASPECT_TRANSPARENT矩形涵蓋所有透明或不規則的部分。

pRect
指向 RECTL 結構,指定應該繪製物件的矩形。 此參數會控制物件的位置和延展。

傳回值

如果成功傳回物件大小的矩形,則為非零;否則為 0。

備註

物件的大小會轉換成 OnGetViewRect 從特定位置開始的矩形(預設值為顯示器的左上角)。 如果您的控制項使用雙階段繪圖,且其不透明和透明元件有不同的維度,請覆寫此函式。

COleControl::OnGetViewStatus

由架構呼叫,以回應容器 IViewObjectEx::GetViewStatus 的要求。

virtual DWORD OnGetViewStatus();

傳回值

如果成功,則為 VIEWSTATUS 列舉的其中一個值;否則為 0。 可能的值為下列任何組合:

名稱 描述
VIEWSTATUS_OPAQUE 物件完全不透明。 如果未設定此位,物件會包含透明元件。 此位僅適用于內容相關層面,不適用於DVASPECT_ICON或DVASPECT_DOCPRINT。
VIEWSTATUS_SOLIDBKGND 物件具有純色背景(由純色組成,而非筆刷圖樣)。 只有在設定VIEWSTATUS_OPAQUE,且僅適用于內容相關層面,而不是DVASPECT_ICON或DVASPECT_DOCPRINT時,這個位才有意義。
VIEWSTATUS_DVASPECTOPAQUE 物件支援DVASPECT_OPAQUE。 所有採用繪圖層面做為參數的 IViewObjectEx 方法都可以透過這個層面呼叫。
VIEWSTATUS_DVASPECTTRANSPARENT 物件支援DVASPECT_TRANSPARENT。 使用這個層面可以呼叫以繪圖層面作為參數的所有 IViewObjectEx 方法。

備註

如果您的控制項使用雙階段繪圖,請覆寫此函式。 預設實作會傳回VIEWSTATUS_OPAQUE。

COleControl::OnHideToolBars

當控制項停用 UI 時,由架構呼叫。

virtual void OnHideToolBars();

備註

實作應該隱藏 所 OnShowToolbars 顯示的所有工具列。

COleControl::OnInactiveMouseMove

在收到WM_MOUSEMOVE訊息時,由非使用中物件的容器呼叫非使用中物件。

virtual void OnInactiveMouseMove(
    LPCRECT lprcBounds,
    long x,
    long y,
    DWORD dwKeyState);

參數

lprcBounds
物件周框,在包含視窗的用戶端座標中。 當收到WM_MOUSEMOVE訊息時,告知物件其在螢幕上的確切位置和大小。

x
滑鼠位置的 x 座標在包含視窗的用戶端座標中。

y
在包含視窗的用戶端座標中,滑鼠位置的 Y 座標。

dwKeyState
識別鍵盤上鍵盤輔助按鍵的目前狀態。 有效值可以是任何旗標的組合MK_CONTROL、MK_SHIFT、MK_ALT、MK_BUTTON、MK_LBUTTON、MK_MBUTTON和MK_RBUTTON。

備註

請注意,視窗用戶端座標(圖元)是用來傳遞滑鼠游標位置。 這也可以藉由在相同的座標系統中傳遞 物件的周框來達成。

COleControl::OnInactiveSetCursor

在收到WM_SETCURSOR訊息時,由非使用中物件的容器呼叫滑鼠指標下。

virtual BOOL OnInactiveSetCursor(
    LPCRECT lprcBounds,
    long x,
    long y,
    DWORD dwMouseMsg,
    BOOL bSetAlways);

參數

lprcBounds
物件周框,在包含視窗的用戶端座標中。 在收到WM_SETCURSOR訊息時,告知物件其在螢幕上的確切位置和大小。

x
滑鼠位置的 x 座標在包含視窗的用戶端座標中。

y
在包含視窗的用戶端座標中,滑鼠位置的 Y 座標。

dwMouseMsg
發生WM_SETCURSOR之滑鼠訊息的識別碼。

bSetAlways
指定物件是否必須設定游標。 如果為 TRUE,物件必須設定游標;如果為 FALSE,則資料指標不一定要設定資料指標,而且應該在該情況下傳回S_FALSE。

傳回值

如果成功則為非零;否則為 0。

備註

請注意,視窗用戶端座標(圖元)是用來傳遞滑鼠游標位置。 這也可以藉由在相同的座標系統中傳遞 物件的周框來達成。

COleControl::OnKeyDownEvent

在處理庫存 KeyDown 事件之後,由架構呼叫。

virtual void OnKeyDownEvent(
    USHORT nChar,
    USHORT nShiftState);

參數

nChar
按下按鍵的虛擬按鍵碼值。 如需標準虛擬金鑰碼的清單,請參閱 Winuser.h

nShiftState
包含下列旗標的組合:

  • SHIFT_MASK動作期間按下 SHIFT 鍵。

  • CTRL_MASK動作期間按下 CTRL 鍵。

  • ALT_MASK動作期間按下 ALT 鍵。

備註

如果您的控制項在引發事件之後需要存取金鑰資訊,請覆寫此函式。

COleControl::OnKeyPressEvent

在引發 Stock KeyPress 事件之後,由架構呼叫。

virtual void OnKeyPressEvent(USHORT nChar);

參數

nChar
包含按下按鍵的虛擬按鍵碼值。 如需標準虛擬金鑰碼的清單,請參閱 Winuser.h

備註

請注意, nChar 值可能已由容器修改。

如果您想要在此事件發生後通知,請覆寫此函式。

COleControl::OnKeyUpEvent

在處理庫存 KeyDown 事件之後,由架構呼叫。

virtual void OnKeyUpEvent(
    USHORT nChar,
    USHORT nShiftState);

參數

nChar
按下按鍵的虛擬按鍵碼值。 如需標準虛擬金鑰碼的清單,請參閱 Winuser.h

nShiftState
包含下列旗標的組合:

  • SHIFT_MASK動作期間按下 SHIFT 鍵。

  • CTRL_MASK動作期間按下 CTRL 鍵。

  • ALT_MASK動作期間按下 ALT 鍵。

備註

如果您的控制項在引發事件之後需要存取金鑰資訊,請覆寫此函式。

COleControl::OnMapPropertyToPage

由架構呼叫,以取得實作指定屬性編輯之屬性頁的類別識別碼。

virtual BOOL OnMapPropertyToPage(
    DISPID dispid,
    LPCLSID lpclsid,
    BOOL* pbPageOptional);

參數

dispid
控制項屬性的分派識別碼。

lpclsid
CLSID將傳回類別識別碼的結構指標。

pbPageOptional
傳回指定屬性頁的使用是否為選擇性的指標。

傳回值

如果類別識別碼已在 lpclsid 傳回,則為非零,否則為 0。

備註

覆寫此函式,以提供從容器屬性瀏覽器叫用控制項屬性頁的方法。

COleControl::OnMnemonic

當容器偵測到已按下 OLE 控制項的助憶鍵時,由架構呼叫。

virtual void OnMnemonic(LPMSG pMsg);

參數

pMsg
助憶鍵 (Mnemonic) 按鍵所產生之 Windows 訊息的指標。

COleControl::OnProperties

當容器叫用控制項的屬性動詞時,由架構呼叫。

virtual BOOL OnProperties(
    LPMSG lpMsg,
    HWND hWndParent,
    LPCRECT lpRect);

參數

lpMsg
叫用動詞的 Windows 訊息指標。

hWndParent
控制項父視窗的控制碼。

lpRect
容器中控制項所使用之矩形的指標。

傳回值

如果呼叫成功,則為非零;否則為 0。

備註

預設實作會顯示強制回應屬性對話方塊。

您也可以使用此函式來顯示控制項的屬性頁。 呼叫 函 OnProperties 式,並在 hWndParent 參數中 傳遞控制項父系的控制碼。 在此情況下,會忽略 lpMsg 和 lpRect 參數的值

COleControl::OnQueryHitPoint

由架構呼叫,以回應容器 IViewObjectEx::QueryHitPoint 的要求。

virtual BOOL OnQueryHitPoint(
    DWORD dwAspect,
    LPCRECT pRectBounds,
    POINT ptlLoc,
    LONG lCloseHint,
    DWORD* pHitResult);

參數

dwAspect
指定物件的表示方式。 有效值取自列舉 DVASPECT 或DVASPECT2。

pRectBounds
RECT結構的指標,指定 OLE 控制項工作區的周框。

ptlLoc
結構的指標, POINT 指定要檢查點擊的點。 點是在 OLE 工作區座標中指定。

lCloseHint
定義「接近」到檢查點擊點的距離。

pHitResult
點擊查詢結果的指標。 下列其中一個值:

  • HITRESULT_OUTSIDE ptlLoc 不在 OLE 物件之外,而不是關閉。

  • HITRESULT_TRANSPARENT ptlLoc 位於 OLE 物件的界限內,但不靠近影像。 例如,透明圓形中間的點可能會HITRESULT_TRANSPARENT。

  • HITRESULT_CLOSE ptlLoc 位於 OLE 物件內部或外部,但足以讓物件在內部考慮。 小型、精簡或詳細物件可能會使用此值。 即使某個點位於物件的周框外,它可能仍然很接近(這是擊中小型物件所需的)。

  • HITRESULT_HIT ptlLoc 位於 物件的影像中。

傳回值

如果成功傳回點擊結果,則為非零;否則為 0。 點擊與 OLE 控制項顯示區域重迭。

備註

查詢物件的顯示矩形是否與指定的點重迭(叫用點)。 QueryHitPoint 可以覆寫以測試非矩形物件的點擊。

COleControl::OnQueryHitRect

由架構呼叫,以回應容器 IViewObjectEx::QueryHitRect 的要求。

virtual BOOL OnQueryHitRect(
    DWORD dwAspect,
    LPCRECT pRectBounds,
    LPCRECT prcLoc,
    LONG lCloseHint,
    DWORD* pHitResult);

參數

dwAspect
指定物件要進行表示的方式。 有效值取自列舉 DVASPECT 或DVASPECT2。

pRectBounds
RECT結構的指標,指定 OLE 控制項工作區的周框。

prcLoc
結構的指標, RECT 指定要檢查點擊的矩形(與物件矩形重迭),相對於物件的左上角。

lCloseHint
未使用。

pHitResult
點擊查詢結果的指標。 下列其中一個值:

  • HITRESULT_OUTSIDE OLE 物件不會叫用矩形中的點。

  • HITRESULT_HIT矩形中至少有一個點會在 物件上叫用。

傳回值

如果成功傳回點擊結果,則為非零;否則為 0。

備註

查詢物件的顯示矩形是否與指定矩形中的任何點重迭(叫用矩形)。 QueryHitRect 可以覆寫以測試非矩形物件的點擊。

COleControl::OnRenderData

由架構呼叫,以擷取指定格式的資料。

virtual BOOL OnRenderData(
    LPFORMATETC lpFormatEtc,
    LPSTGMEDIUM lpStgMedium);

參數

lpFormatEtc
指向 FORMATETC 結構,指定要求資訊的格式。

lpStgMedium
指向要傳回資料的 STGMEDIUM 結構。

傳回值

如果成功則為非零;否則為 0。

備註

指定的格式是先前使用 DelayRenderData DelayRenderFileData 成員函式在控制項物件中放置的格式,以供延遲轉譯。 如果提供的儲存媒體是檔案或記憶體,則此函式的預設實作會分別呼叫 OnRenderFileDataOnRenderGlobalData 。 如果要求的格式是CF_METAFILEPICT或持續性屬性集格式,則預設實作會轉譯適當的資料,並傳回非零值。 否則,它會傳回 0,而且不會執行任何動作。

如果 lpStgMedium-tymed > 是TYMED_Null,則 STGMEDIUM 應該配置並填入,如 lpFormatEtc-tymed > 指定。 如果未TYMED_Null,STGMEDIUM 應該會填入資料。

覆寫此函式,以要求的格式和媒體提供您的資料。 視您的資料而定,您可能想要改為覆寫此函式的其他其中一個版本。 如果您的資料大小較小且大小固定,請覆寫 OnRenderGlobalData 。 如果您的資料位於檔案中,或大小不一,請覆寫 OnRenderFileData

如需詳細資訊,請參閱 FORMATETC Windows SDK 中的 和 STGMEDIUM 結構。

COleControl::OnRenderFileData

架構呼叫,以在儲存媒體為檔案時擷取指定格式的資料。

virtual BOOL OnRenderFileData(
    LPFORMATETC lpFormatEtc,
    CFile* pFile);

參數

lpFormatEtc
指向 FORMATETC 結構,指定要求資訊的格式。

pFile
指向要轉譯資料的 CFile 物件。

傳回值

如果成功則為非零;否則為 0。

備註

指定的格式是先前使用 DelayRenderData 成員函式在控制項物件 中放置的格式,用於延遲轉譯。 此函式的預設實作只會傳回 FALSE。

覆寫此函式,以要求的格式和媒體提供您的資料。 視您的資料而定,您可能會想要改為覆寫此函式的其他其中一個版本。 如果您想要處理多個儲存媒體,請覆寫 OnRenderData 。 如果您的資料位於檔案中,或大小不一,請覆寫 OnRenderFileData

如需詳細資訊,請參閱 FORMATETC Windows SDK 中的 結構。

COleControl::OnRenderGlobalData

當指定的儲存媒體是全域記憶體時,由架構呼叫以指定格式擷取資料。

virtual BOOL OnRenderGlobalData(
    LPFORMATETC lpFormatEtc,
    HGLOBAL* phGlobal);

參數

lpFormatEtc
指向 FORMATETC 結構,指定要求資訊的格式。

phGlobal
指向要傳回資料之全域記憶體的控制碼。 如果未配置記憶體,此參數可以是 Null。

傳回值

如果成功則為非零;否則為 0。

備註

指定的格式是先前使用 DelayRenderData 成員函式在控制項物件 中放置的格式,用於延遲轉譯。 此函式的預設實作只會傳回 FALSE。

如果 phGlobal 為 Null,則應該在 phGlobal 中 配置並傳回新的 HGLOBAL 。 否則,phGlobal 所 指定的 HGLOBAL 應該填入資料。 放置於 HGLOBAL 的資料量不得超過記憶體區塊的目前大小。 此外,區塊無法重新配置為較大的大小。

覆寫此函式,以要求的格式和媒體提供您的資料。 視您的資料而定,您可能想要改為覆寫此函式的其他其中一個版本。 如果您想要處理多個儲存媒體,請覆寫 OnRenderData 。 如果您的資料位於檔案中,或大小不一,請覆寫 OnRenderFileData

如需詳細資訊,請參閱 FORMATETC Windows SDK 中的 結構。

COleControl::OnResetState

當控制項的屬性應設定為預設值時,由架構呼叫。

virtual void OnResetState();

備註

預設實作會呼叫 DoPropExchange ,傳遞 CPropExchange 會導致屬性設定為其預設值的物件。

控制項寫入器可以在這個可覆寫的中插入 OLE 控制項的初始化程式碼。 當 IPersistStream::Load 或 IPersist儲存體::Load 失敗,或 IPersistStreamInit::InitNew 或 IPersist 時,會呼叫此函式儲存體::InitNew ,而不需要先呼叫 IPersistStream::LoadIPersistStorage::Load

COleControl::OnSetClientSite

當容器呼叫 控制項的 IOleControl::SetClientSite 函式時,由架構呼叫。

virtual void OnSetClientSite();

備註

根據預設, OnSetClientSite 檢查是否載入資料路徑屬性,以及是否為 ,會呼叫 DoDataPathPropExchange

覆寫此函式以執行此通知的任何特殊處理。 特別是,此函式的覆寫應該呼叫基類。

COleControl::OnSetData

由架構呼叫,以將控制項的資料取代為指定的資料。

virtual BOOL OnSetData(
    LPFORMATETC lpFormatEtc,
    LPSTGMEDIUM lpStgMedium,
    BOOL bRelease);

參數

lpFormatEtc
指定資料格式之 FORMATETC 結構的指標。

lpStgMedium
資料所在的 STGMEDIUM 結構的指標。

bRelease
如果控制項應該釋放儲存媒體,則為 TRUE;如果控制項不應該釋放儲存媒體,則為 FALSE。

傳回值

如果成功則為非零;否則為 0。

備註

如果資料採用永續性屬性集格式,預設實作會據以修改控制項的狀態。 否則,預設實作不會執行任何動作。 如果 bRelease 為 TRUE,則會呼叫 ReleaseStgMedium ;否則為 。

覆寫此函式,以將控制項的資料取代為指定的資料。

如需詳細資訊,請參閱 FORMATETC Windows SDK 中的 和 STGMEDIUM 結構。

COleControl::OnSetExtent

當控制項的範圍需要變更時,由架構呼叫,因為呼叫 IOleObject::SetExtent

virtual BOOL OnSetExtent(LPSIZEL lpSizeL);

參數

lpSizeL
結構指標 SIZEL ,使用長整數來表示控制項的寬度和高度,以 HIMETRIC 單位表示。

傳回值

如果已接受大小變更,則為非零;否則為 0。

備註

預設實作會處理控制項範圍的大小調整。 如果控制項為就地作用中,則會呼叫容器的 OnPosRectChanged

覆寫此函式以改變控制項的預設調整大小。

COleControl::OnSetObjectRects

由架構呼叫以實作 IOleInPlaceObject::SetObjectRects 的 呼叫

virtual BOOL OnSetObjectRects(
    LPCRECT lpRectPos,
    LPCRECT lpRectClip);

參數

lpRectPos
結構的指標 RECT ,表示控制項相對於容器的新位置和大小。

lpRectClip
結構的指標 RECT ,表示要裁剪控制項的矩形區域。

傳回值

如果已接受重新置放,則為非零;否則為 0。

備註

預設實作會自動處理控制項視窗的重新置放和調整大小,並傳回 TRUE。

覆寫此函式以改變此函式的預設行為。

COleControl::OnShowToolBars

當控制項已啟用 UI 時,由架構呼叫。

virtual void OnShowToolBars();

備註

預設實作不做任何動作。

COleControl::OnTextChanged

當庫存標題或 Text 屬性值變更時,由架構呼叫。

virtual void OnTextChanged();

備註

預設實作會呼叫 InvalidateControl

如果您想要在此屬性變更之後通知,請覆寫此函式。

COleControl::OnWindowlessMessage

由架構呼叫,以回應容器 IOleInPlaceObjectWindowless::OnWindowMessage 的要求。

virtual BOOL OnWindowlessMessage(
    UINT msg,
    WPARAM wParam,
    LPARAM lParam,
    LRESULT* plResult);

參數

msg
Windows 所傳遞的訊息識別碼。

wParam
由 Windows 傳遞。 指定其他訊息特定資訊。 此參數的內容取決於 msg 參數的值

lParam
由 Windows 傳遞。 指定其他訊息特定資訊。 此參數的內容取決於 msg 參數的值

plResult
Windows 結果碼。 指定訊息處理的結果,並取決於傳送的訊息。

傳回值

如果成功則為非零;否則為 0。

備註

處理無視窗控制項的視窗訊息。 COleControlOnWindowlessMessage的 應該用於滑鼠訊息和鍵盤訊息以外的視窗訊息。 COleControl 會特別提供 SetCapture SetFocus ,以取得無視窗 OLE 物件的滑鼠擷取和鍵盤焦點。

因為無視窗物件沒有視窗,所以他們需要一個機制,讓容器將訊息分派給他們。 無視窗 OLE 物件會透過 OnWindowMessage 介面上的 IOleInPlaceObjectWindowless 方法從其容器取得訊息(無視窗支援的 IOleInPlaceObject 延伸模組 )。 OnWindowMessage 不會採用 HWND 參數。

COleControl::P arentToClient

將 pPoint 座標轉譯為用戶端座標。

virtual UINT ParentToClient(
    LPCRECT lprcBounds,
    LPPOINT pPoint,
    BOOL bHitTest = FALSE) const;

參數

lprcBounds
容器內 OLE 控制項界限的指標。 不是工作區,而是整個控制項的區域,包括框線和捲軸。

pPoint
要轉譯為控制項工作區座標之父代 (container) 點的指標。

bHitTest
指定是否要在點上完成點擊測試。

傳回值

如果 bHitTest 為 FALSE,則傳回 HTNOWHERE。 如果 bHitTest 為 TRUE,則傳回上層 (container) 點落在 OLE 控制項工作區的位置,而且是下列其中一個滑鼠點擊測試值:

  • HTBORDER 在沒有調整大小框線的視窗框線中。

  • HTBOTTOM 在視窗的下水準框線中。

  • HTBOTTOMLEFT 在視窗框線的左下角。

  • HTBOTTOMRIGHT 在視窗框線的右下角。

  • 在標題列區域中的HTCAPTION。

  • TCLIENT 在工作區中。

  • HTERROR 在螢幕背景或視窗之間的分隔線上(與 HTNOWHERE 相同,不同之處在于 DefWndProc Windows 函式會產生系統嗶聲來指出錯誤)。

  • HTGROWBOX 在大小方塊中。

  • HTHSCROLL 在水準捲軸中。

  • HTLEFT 在視窗的左框線中。

  • HTMAXBUTTON 在 [最大化] 按鈕中。

  • HTMENU 在功能表區域中。

  • HTMINBUTTON 在 [最小化] 按鈕中。

  • HTNOWHERE 在螢幕背景或視窗之間的分隔線上。

  • HTREDUCE 在 [最小化] 按鈕中。

  • HTRIGHT 在視窗的右框線。

  • HTSIZE 大小方塊(與 HTGROWBOX 相同)。

  • HTSYSMENU 在 [控制項] 功能表或子視窗中的 [關閉] 按鈕中。

  • HTTOP 在視窗的上方水準框線中。

  • HTTOPLEFT 在視窗框線的左上角。

  • HTTOPRIGHT 在視窗框線的右上角。

  • HTTRANSPARENT 在目前由另一個視窗所涵蓋的視窗中。

  • HTVSCROLL 在垂直捲動條中。

  • HTZOOM 在 [最大化] 按鈕中。

備註

在輸入 pPoint 上,相對於父系的原點(容器左上角)。 在輸出 pPoint 上,相對於 OLE 控制項工作區的原點(控制項工作區左上角)。

COleControl::P ostModalDialog

通知容器已關閉強制回應對話方塊。

void PostModalDialog(HWND hWndParent = NULL);

參數

hWndParent
強制回應對話方塊的父視窗控制碼。

備註

顯示任何強制回應對話方塊之後,呼叫此函式。 您必須呼叫此函式,容器才能啟用 所 PreModalDialog 停用的任何最上層視窗。 此函式應該與 的 PreModalDialog 呼叫配對。

COleControl::P reModalDialog

通知容器即將顯示強制回應對話方塊。

void PreModalDialog(HWND hWndParent = NULL);

參數

hWndParent
強制回應對話方塊的父視窗控制碼。

備註

顯示任何強制回應對話方塊之前,請先呼叫此函式。 您必須呼叫此函式,讓容器可以停用其所有最上層視窗。 顯示強制回應對話方塊之後,您接著必須呼叫 PostModalDialog

COleControl::RecreateControlWindow

終結並重新建立控制項的視窗。

void RecreateControlWindow();

備註

如果您需要變更視窗的樣式位,可能需要這樣做。

COleControl::Refresh

強制重新貼上 OLE 控制項。

void Refresh();

備註

基類支援 COleControl 此函式做為 stock 方法,稱為 Refresh。 這可讓 OLE 控制項的使用者在特定時間重新貼上控制項。 如需此方法的詳細資訊,請參閱 ActiveX Controls:方法 一文

COleControl::ReleaseCapture

釋放滑鼠擷取。

BOOL ReleaseCapture();

傳回值

如果成功則為非零;否則為 0。

備註

如果控制項目前有滑鼠擷取,則會釋放擷取。 否則,此函式不會有任何作用。

COleControl::ReleaseDC

釋放無視窗控制項容器的顯示裝置內容,釋放裝置內容以供其他應用程式使用。

int ReleaseDC(CDC* pDC);

參數

pDC
識別要釋放的容器裝置內容。

傳回值

如果成功則為非零;否則為 0。

備註

應用程式必須針對 GetDC 的每個呼叫呼叫呼叫。 ReleaseDC

COleControl::ReparentControlWindow

設定 控制項的父代。

virtual void ReparentControlWindow(
    HWND hWndOuter,
    HWND hWndParent);

參數

hWndOuter
控制項視窗的控制碼。

hWndParent
新父視窗的控制碼。

備註

呼叫此函式以重設控制項視窗的父代。

COleControl::ResetStockProps

將庫存屬性的狀態 COleControl 初始化為其預設值。

void ResetStockProps();

備註

屬性包括:外觀、BackColor、BorderStyle、Caption、Enabled、Font、ForeColor、hWnd 和 Text。 如需股票屬性的描述,請參閱 ActiveX 控制項:新增庫存屬性

您可以使用 和 ResetVersion 來覆寫 COleControl::OnResetState ,來改善控制項的二進位初始化效能 ResetStockProps 。 請參閱以下範例。 如需優化初始化的詳細資訊,請參閱 ActiveX 控制項:優化

範例

void CMyAxCtrl::OnResetState()
{
   ResetVersion(MAKELONG(_wVerMinor, _wVerMajor));
   ResetStockProps();

   // initialize custom properties here
}

COleControl::ResetVersion

將版本號碼初始化為指定的值。

void ResetVersion(DWORD dwVersionDefault);

參數

dwVersionDefault
要指派給 控制項的版本號碼。

備註

您可以使用 和 ResetStockProps 來覆寫 COleControl::OnResetState ,來改善控制項的二進位初始化效能 ResetVersion 。 請參閱 ResetStockProps 範例。 如需優化初始化的詳細資訊,請參閱 ActiveX 控制項:優化

COleControl::ScrollWindow

允許無視窗的 OLE 物件在畫面上捲動其就地使用中影像內的區域。

void ScrollWindow(
    int xAmount,
    int yAmount,
    LPCRECT lpRect = NULL,
    LPCRECT lpClipRect = NULL);

參數

xAmount
指定水準捲動的裝置單位數量。 此參數必須是負值,才能向左捲動。

yAmount
指定垂直捲動的裝置單位數量。 此參數必須是負值,才能向上捲動。

lpRect
指向 CRect 物件或 RECT 結構,指定要在包含視窗的用戶端座標中捲動 OLE 物件的工作區部分。 如果 lpRect 為 Null,則會捲動整個 OLE 物件的工作區。

lpClipRect
CRect指向物件或 RECT 結構,指定要裁剪的矩形。 只會捲動矩形內的圖元。 即使位於 lpRect 矩形中 ,矩形外的位也不會受到影響。 如果 lpClipRect 為 Null,則捲動矩形上不會執行任何裁剪。

COleControl::SelectFontObject

選取字型到裝置內容。

CFont* SelectFontObject(
    CDC* pDC,
    CFontHolder& fontHolder);

參數

pDC
裝置內容物件的指標。

fontHolder
CFontHolder 物件的參考,代表要選取的字型。

傳回值

先前選取字型的指標。 當呼叫端完成所有使用 fontHolder 的繪圖作業時, 應該將它當做 CDC::SelectObject 的參數 來重新選取先前選取的字型

COleControl::SelectStockFont

將 [字型] 屬性選取為裝置內容。

CFont* SelectStockFont(CDC* pDC);

參數

pDC
要在其中選取字型的裝置內容。

傳回值

先前選取 CFont 物件的指標。 當您完成時,您應該使用 CDC::SelectObject 將此字型選取回裝置內容。

COleControl::SerializeExtent

序列化或初始化配置給 控制項的顯示空間狀態。

void SerializeExtent(CArchive& ar);

參數

Ar
CArchive要序列化至或從中序列化的物件。

備註

您可以使用 、 SerializeStockPropsSerializeVersion 來覆寫 COleControl::Serialize ,來改善控制項的二進位持續性效能 SerializeExtent 。 請參閱以下範例。 如需優化初始化的詳細資訊,請參閱 ActiveX 控制項:優化

範例

void CMyAxCtrl::Serialize(CArchive &ar)
{
   SerializeVersion(ar, MAKELONG(_wVerMinor, _wVerMajor));
   SerializeExtent(ar);
   SerializeStockProps(ar);

   if (ar.IsStoring())
   { // storing code
   }
   else
   { // loading code
   }
}

COleControl::SerializeStockProps

序列化或初始化股票屬性的狀態 COleControl :外觀、BackColor、BorderStyle、Caption、Enabled、Font、ForeColor 和 Text。

void SerializeStockProps(CArchive& ar);

參數

Ar
CArchive要序列化至或從中序列化的物件。

備註

如需股票屬性的描述,請參閱 ActiveX 控制項:新增庫存屬性

您可以使用 、 SerializeExtentSerializeVersion 來覆寫 COleControl::Serialize ,來改善控制項的二進位持續性效能 SerializeStockProps 。 如需範例,請參閱 SerializeExtent 上的程式 代碼。 如需優化初始化的詳細資訊,請參閱 ActiveX 控制項:優化

COleControl::SerializeVersion

序列化或初始化控制項版本資訊的狀態。

DWORD SerializeVersion(
    CArchive& ar,
    DWORD dwVersionDefault,
    BOOL bConvert = TRUE);

參數

Ar
CArchive要序列化至或從中序列化的物件。

dwVersionDefault
控制項的目前版本號碼。

bConvert
指出在儲存資料時,持續性資料是否應該轉換成最新的格式,或以載入時所採用的相同格式進行維護。

傳回值

控制項的版本號碼。 如果正在載入指定的封存, SerializeVersion 則會傳回從該封存載入的版本。 否則,它會傳回目前載入的版本。

備註

您可以使用 、 SerializeExtentSerializeStockProps 來覆寫 COleControl::Serialize ,來改善控制項的二進位持續性效能 SerializeVersion 。 如需範例,請參閱 SerializeExtent 上的程式 代碼。 如需優化初始化的詳細資訊,請參閱 ActiveX 控制項:優化

COleControl::SetAppearance

設定控制項的內含外觀屬性值。

void SetAppearance (short sAppearance);

參數

sAppearance
short要用於控制面板的 (VT_I2) 值。 零的值會將控制項的外觀設定為平面,而值 1 會將控制項的外觀設定為 3D。

備註

如需庫存屬性的詳細資訊,請參閱 ActiveX 控制項:屬性

COleControl::SetBackColor

設定控制項的 stock BackColor 屬性值。

void SetBackColor(OLE_COLOR dwBackColor);

參數

dwBackColor
要用於控制項背景繪圖的OLE_COLOR值。

備註

如需使用此屬性和其他相關屬性的詳細資訊,請參閱 ActiveX Controls:Properties 一文

COleControl::SetBorderStyle

設定控制項的 stock BorderStyle 屬性值。

void SetBorderStyle(short sBorderStyle);

參數

sBorderStyle
控制項的新框線樣式;0 表示沒有框線,1 表示一般框線。

備註

然後會重新建立並 OnBorderStyleChanged 呼叫控制項視窗。

COleControl::SetCapture

讓控制項的容器視窗代表控制項擁有滑鼠擷取。

CWnd* SetCapture();

傳回值

先前接收滑鼠輸入之 CWnd 視窗物件的指標。

備註

如果控制項已啟用且無視窗,則此函式會代表控制項的容器視窗取得滑鼠擷取。 否則,此函式會使控制項本身擁有滑鼠擷取(與 CWnd::SetCapture 相同)。

COleControl::SetControlSize

設定 OLE 控制項視窗的大小,並通知容器控制項網站正在變更。

BOOL SetControlSize(int cx, int cy);

參數

殘雪
以圖元指定控制項的新寬度。

cy
以圖元指定控制項的新高度。

傳回值

如果呼叫成功,則為非零;否則為 0。

備註

此函式不應用於控制項的建構函式中。

請注意,控制項視窗的所有座標都相對於控制項的左上角。

COleControl::SetEnabled

設定控制項的 Stock Enabled 屬性值。

void SetEnabled(BOOL bEnabled);

參數

bEnabled
如果要啟用控制項,則為 TRUE;否則為 FALSE。

備註

設定這個屬性之後, OnEnabledChange 就會呼叫 。

COleControl::SetFocus

讓控制項的容器視窗代表控制項擁有輸入焦點。

CWnd* SetFocus();

傳回值

先前具有輸入焦點之 CWnd 視窗物件的指標,如果沒有這類視窗,則為 Null。

備註

如果控制項已啟用且無視窗,則此函式會代表控制項取得輸入焦點的控制項容器視窗。 輸入焦點會將鍵盤輸入導向至容器的視窗,而容器會將所有後續的鍵盤訊息分派給呼叫 SetFocus 的 OLE 物件。 任何先前具有輸入焦點的視窗都會遺失它。

如果控制項不是無視窗,此函式會使控制項本身擁有輸入焦點(與 CWnd::SetFocus 相同)。

COleControl::SetFont

設定控制項的 stock Font 屬性。

void SetFont(LPFONTDISP pFontDisp);

參數

pFontDisp
字型分派介面的指標。

COleControl::SetForeColor

設定控制項的 stock ForeColor 屬性值。

void SetForeColor(OLE_COLOR dwForeColor);

參數

dwForeColor
要用於控制項前景繪製的OLE_COLOR值。

備註

如需使用此屬性和其他相關屬性的詳細資訊,請參閱 ActiveX Controls:Properties 一文

COleControl::SetInitialDataFormats

由架構呼叫,以初始化 控制項所支援的資料格式清單。

virtual void SetInitialDataFormats();

備註

預設實作會指定兩種格式:CF_METAFILEPICT和持續性屬性集。

COleControl::SetInitialSize

設定第一次顯示在容器中的 OLE 控制項大小。

void SetInitialSize(
    int cx,
    int cy);

參數

殘雪
OLE 控制項的初始寬度,以圖元為單位。

cy
以圖元為單位的 OLE 控制項初始高度。

備註

在您的建構函式中呼叫此函式,以設定控制項的初始大小。 初始大小是以裝置單位或圖元來測量。 建議您在控制項的建構函式中呼叫此呼叫。

COleControl::SetModifiedFlag

變更控制項的修改狀態。

void SetModifiedFlag(BOOL bModified = TRUE);

參數

bModified
控制項修改旗標的新值。 TRUE 表示控制項的狀態已修改;FALSE 表示控制項的狀態剛剛儲存。

備註

每當發生會影響控制項持續狀態的變更時,呼叫此函式。 例如,如果持續性屬性的值變更,請使用 bModified TRUE 呼叫此函式

COleControl::SetNotPermitted

表示編輯要求失敗。

void SetNotPermitted();

備註

失敗時 BoundPropertyRequestEdit 呼叫此函式。 此函式會擲回 類型的 COleDispScodeException 例外狀況,指出不允許設定作業。

COleControl::SetNotSupported

防止使用者修改控制項的屬性值。

void SetNotSupported();

備註

呼叫此函式,取代任何屬性的 Set 函式,其中不支援控制項的使用者修改屬性值。 其中一個範例是唯讀的屬性。

COleControl::SetRectInContainer

設定控制項矩形相對於容器的座標,以裝置單位表示。

BOOL SetRectInContainer(LPCRECT lpRect);

參數

lpRect
矩形的指標,包含控制項相對於容器的新座標。

傳回值

如果呼叫成功,則為非零;否則為 0。

備註

如果控制項已開啟,則會調整大小;否則會呼叫容器的 OnPosRectChanged 函式。

COleControl::SetText

設定控制項的 stock Caption 或 Text 屬性的值。

void SetText(LPCTSTR pszText);

參數

pszText
字元字串的指標。

備註

請注意,庫存標題和文字屬性都對應至相同的值。 這表示對任一屬性所做的任何變更都會自動變更這兩個屬性。 一般而言,控制項應該支援 stock Caption 或 Text 屬性,但不能同時支援這兩者。

COleControl::ThrowError

發出控制項中發生錯誤的訊號。

void ThrowError(
    SCODE sc,
    UINT nDescriptionID,
    UINT nHelpID = -1);

void ThrowError(
    SCODE sc,
    LPCTSTR pszDescription = NULL,
    UINT nHelpID = 0);

參數

Sc
要報告的狀態碼值。 如需可能程式碼的完整清單,請參閱 ActiveX 控制項:進階主題一

nDescriptionID
要報告之例外狀況的字串資源識別碼。

nHelpID
要回報之主題的說明識別碼。

pszDescription
字串,包含要報告之例外狀況的說明。

備註

此函式只應該從 OLE 屬性的 Get 或 Set 函式內呼叫,或 OLE 自動化方法的實作。 如果您需要發出其他時間發生的錯誤訊號,您應該引發庫存錯誤事件。

COleControl::TransformCoords

轉換 HIMETRIC 單位與容器原生單位之間的座標值。

void TransformCoords(
    POINTL* lpptlHimetric,
    POINTF* lpptfContainer,
    DWORD flags);

參數

lpptlHimetric
結構指標, POINTL 其中包含 HIMETRIC 單位中的座標。

lpptfContainer
POINTF結構指標,其中包含容器單位大小中的座標。

flags
下列值的組合:

  • XFORMCOORDS_POSITION容器中的位置。

  • XFORMCOORDS_SIZE容器中的 A 大小。

  • XFORMCOORDS_HIMETRICTOCONTAINER將 HIMETRIC 單位轉換成容器的單位。

  • XFORMCOORDS_CONTAINERTOHIMETRIC將容器的單位轉換成 HIMETRIC 單位。

備註

前兩個旗標,XFORMCOORDS_POSITION和XFORMCOORDS_SIZE,指出座標應該視為位置或大小。 其餘兩個旗標表示轉換的方向。

COleControl::TranslateColor

將色彩值從OLE_COLOR資料類型轉換成 COLORREF 資料類型。

COLORREF TranslateColor(
    OLE_COLOR clrColor,
    HPALETTE hpal = NULL);

參數

clrColor
OLE_COLOR資料類型。 如需詳細資訊,請參閱 Windows OleTranslateColor 函式。

hpal
選用調色盤的控制碼;可以是 Null。

傳回值

RGB(紅色、綠色、藍色)32 位色彩值,定義最接近 裝置可代表之 clrColor 值的純色。

備註

此函式有助於將 Stock ForeColor 和 BackColor 屬性轉譯為 CDC 成員函式所使用的 COLORREF 類型。

COleControl::WillAmbientsBeValidDuringLoad

決定當控制項從其永續性狀態載入環境屬性值時,是否應該使用環境屬性值作為預設值。

BOOL WillAmbientsBeValidDuringLoad();

傳回值

非零表示環境屬性有效;否則環境屬性無效。

備註

在某些容器中,您的控制項可能無法在初始呼叫 覆寫 COleControl::DoPropExchange 期間存取其環境屬性。 如果容器在呼叫 IOleObject::SetClientSite 之前呼叫 IPersistStreamInit::Load 或 IPersist儲存體::Load ,則為這種情況(也就是說,如果它不接受OLEMISC_SETCLIENTSITEFIRST狀態位)。

COleControl::WindowProc

提供 物件的 COleControl Windows 程式。

virtual LRESULT WindowProc(
    UINT message,
    WPARAM wParam,
    LPARAM lParam);

參數

message
指定要處理的 Windows 訊息。

wParam
提供處理訊息時所使用的其他資訊。 參數值取決於訊息。

lParam
提供處理訊息時所使用的其他資訊。 參數值取決於訊息。

傳回值

分派之訊息的傳回值。

備註

呼叫此函式,以透過控制項的訊息對應分派特定訊息。

另請參閱

MFC 範例 CIRC3
MFC 範例 TESTHELP
COlePropertyPage 類別
CWnd 類別
階層架構圖表
CFontHolder 類別
CPictureHolder 類別