COleControl

COleControl類是一個開發OLE控制項的功能強大的基類。它由CWnd類派生,繼承了Windows視窗對象的所有功能,並加上了OLE獨有的功能,例如事件觸發、支持方法和特性等。

簡介

OLE控制項可以插入到OLE包容器中,並通過事件觸發和包容器引發方法和特性的雙向系統相互通訊和聯繫。注意,標準的OLE包容器僅支持OLE控制項的基本功能,而不支持OLE控制項的擴展特性。當在控制項中採取某個動作,就會向包容器發出一個事件,稱為事件觸發。相反,包容器引發一系列的類似於C++類的成員函式和數據成員的方法和特性來與控制項進行通訊。這種方法使開發者可以控制控制項的外觀,並在產生某些動作時通知包容器。

作用

無視窗控制項

OLE控制項可在沒有視窗的情況下使用。無視窗控制項是十分有用的:

·無視窗控制項可以是透明和無形的。

·無視窗控制項減小了實例的尺寸和創建對象的時間。

控制項並不需要視窗。一個視窗提供的服務可以容易地通過一個單一的共享視窗(通常是包容器的)和分派碼的一位來提供。有一個視窗通常使對象的複雜度增加。

當使用無視窗激活時,包容器(它有一個視窗)將負責提供本來應由控制項自己的視窗提供的服務。例如,如果你的控制項需要查詢鍵盤輸入焦點、查詢滑鼠位置或獲取一個設備上下文等,都由包容器來提供支持。

COleControl無視窗操作成員函式將調用包容器上的這些操作。

當不能使用無視窗激活時,包容器會向控制項的IOleInPlaceObjectWindowless界面(支持無視窗的IOleInPlaceObject的擴展)傳送輸入訊息。在適當調整滑鼠坐標後,COleControl實現這些該界面時通過控制項的訊息映射圖分派這些訊息。可以通過增加訊息映射圖的入口點,同處理普通的視窗訊息一樣處理這些訊息。

在無視窗控制項中,通常需要使用COleControl成員函式來代替相應的成員函式或相關的Windows API函式。

只有在OLE控制項對象活動時,它們也能創建視窗。但是對象進行不活動-活動切換的工作量增大,速度也會下降。這可能會引發一些問題:

例如在文本框的柵格中,當游標在列間上下移動時,每個控制項都先被就地激活,然後取消。這樣不活動/活動切換的速度將直接影響滾動的速度。

#include <afxctl.h>

COleControl類的成員

構造函式/析構函式

COleControl 創建一個COleControl對象
RecreateControlWindow銷毀並重建控制項的視窗

初始化

InitializeIIDs 將控制項將要使用的IIDs通知基類
ResetStockProps初始化COleControl的標準特性為預設值
ResetVersion將版本數設定為給定值
SetInitialSize設定一個OLE控制項第一次在包容器中顯示的尺寸

控制項修改函式

GetControlFlags 存取控制項標誌設定
IsModified判定控制項的狀態是否已經改變
SetModifiedFlag改變一個控制項的修改狀態
ExchangeExtent串列化控制項的寬度和高度
ExchangeStockProps串列化控制項的標準特性
ExchangeVersion串列化控制項的版本號
IsConvertingVBX允許OLE控制項的指定裝入
SerializeExtent串列化或初始化控制項的顯示空間
SerializeStockProps串列化或初始化COleControl標準特性
SerializeVersion串列化或初始化控制項的版本信息
SetModifiedFlag改變控制項的修改狀態
WillAmbientsBeValidDuringLoad決定環境特性在控制項下次裝入時是否可用

更新/繪畫函式

DoSuperclassPaint 重畫一個從Windows控制項派生的OLE控制項
InvalidateControl使一個已經顯示的控制項的區域無效,導致重畫控制項
IsOptimizedDraw指示包容器是否支持當前繪畫操作的最佳化
SelectFontObject為一個設備上下文選定自定義Font特性
SelectStockFont為一個設備上下文選定標準Font特性
TranslateColor將OLE_COLOR值轉換為一個COLORREF值

分派異常

GetNotSupported 禁止用戶存取控制項的特性
SetNotPermitted指示編輯請求失敗
SetNotSupported禁止用戶修改控制項的特性
ThrowErrorOLE控制項出錯時發出信號

環境屬性函式

AmbientBackColor 返迴環境BackColor特性的值
AmbientDisplayName返回由包容器說明的控制項名稱
AmbientForeColor返迴環境ForeColor特性的值
AmbientFont返迴環境Font特性的值
AmbientLocaleID返回包容器的本地標識(ID)
AmbientScaleUnits返回包容器使用的單位名稱
AmbientShowGrabHandles決定是否要顯示抓取句柄
AmbientShowHatching決定是否顯示陰影
AmbientTextAlign返回包容器說明的文本對齊方式
AmbientUIDead決定控制項是否要回響用戶動作
AmbientUserMode決定包容器模式
GetAmbientProperty返回指定的環境變數值

事件觸發函式

FireClick 觸發標準Click事件
FireDblClick觸發標準DblClick事件
FireError觸發標準Error事件FireEvent觸發一個自定義事件
FireKeyDown觸發標準KeyDown事件
FireKeyPress觸發標準KeyPress事件
FireKeyUp觸發標準KeyUp事件
FireMouseDown觸發標準MouseDown事件
FireMouseMove觸發標準MouseMove事件
FireMouseUp觸發標準MouseUp事件
FireReadyStateChange當控制項的就緒狀態改變時,觸發一個事件

標準方法和屬性

DoClick 執行標準DoClick方法
Refresh重畫控制項外觀
GetAppearance返回標準Appearance特性的值
SetAppearance設定標準Appearance特性的值
GetBackColor返回標準BackColor特性的值
SetBackColor設定標準BackColor特性的值
GetBorderStyle返回標準BorderStyle特性的值
SetBorderStyle設定標準BorderStyle特性的值
GetEnabled發揮標準Enabled 特性的值
SetEnabled設定標準Enabled 特性的值
GetForeColor返回標準ForeColor特性的值
SetForeColor設定標準ForeColor特性的值
GetFont返回標準Font特性的值
SetFont設定標準Font特性的值
GetText返回標準Text或Caption特性的值
SetText設定標準Text或Caption特性的值
GetFontTextMetrics返回CFontHolder對象的度量
GetStockTextMetrics返回標準Font特性的度量
InternalGetFont返回CFontHolder對象的標準Font特性的值
InternalGetText獲取標準Text或Caption特性
SelectStockFont選擇控制項的標準Font特性到設備上下文中
GetHwnd返回標準hWnd特性的值

OLE控制項的尺寸函式

GetControlSize 返回OLE控制項的位置和尺寸
SetControlSize設定OLE控制項的位置和尺寸
GetRectInContainer返回控制項相對它的包容器的矩形邊界
SetRectInContainer設定控制項相對它的包容器的矩形邊界

OLE數據綁定函式

BoundPropertyChanged 通知包容器,說明綁定特性已經改變
BoundPropertyRequestEdit申請編輯特性值的許可許可權

簡單框架函式

EnableSimpleFrame 使控制項支持簡單框架

OLE控制項位置函式

ControlInfoChanged 控制項處理的助記符改變後調用該函式
GetClientSite查詢在包容器內的對象的當前客戶區指針
GetExtendedControl獲取屬於該包容器的一個擴展控制項對象的指針
LockInPlaceActive決定控制項能否被包容器取消
TransformCoords在包容器和控制項之間變換坐標

模態對話框函式

PreModalDialog 通知包容器,說明將顯示一個模態對話框
PostModalDialog通知包容器,說明一個模態對話框已被關閉

無視窗操作

ClipCaretRect 一個脫字元號被控制項覆蓋,調整它的矩形邊界
GetCapture決定一個無視窗、活動控制項對象是否獲得滑鼠捕獲焦點
GetClientRect獲取控制項客戶區的尺寸
GetDC提供無視窗控制項從它的包容器獲得設備上下文的途徑
GetFocus決定一個控制項是否具有輸入焦點
GetWindowlessDropTarget覆蓋該函式,允許無視窗控制項成為拖放操作的目標
InvalidateRgn使包容器視窗的客戶區在給定區域內無效。用於重畫該區域內的無視窗控制項
OnWindowlessMessage處理無視窗控制項的視窗訊息(滑鼠和鍵盤訊息除外)
ReleaseCapture釋放滑鼠捕獲焦點
ReleaseDC釋放無視窗控制項的包容器的顯示設備上下文
ScrollWindow允許無視窗控制項在螢幕上滾動它的活動圖象的一個區域
SetCapture使控制項的包容器視窗取代控制項的滑鼠捕獲焦點
SetFocus使控制項的包容器視窗取代控制項的輸入焦點

非活動指針處理函式

ClientToParent 將相對控制項原點的點平移到相對它的包容器原點的點
GetActivationPolicy改變支持IPointerInactive界面的控制項的預設激活行為
GetClientOffset獲取控制項矩形區域左上角和它的客戶區左上角的差別
OnInactiveMouseMove覆蓋該函式,使滑鼠指示下的非活動控制項的包容器向控制項分派WM_MOUSEMOVE訊息
OnInactiveSetCursor覆蓋該函式,使滑鼠指示下的非活動控制項的包容器像控制項分派WM_SETCURSOR訊息
ParentToClient將相對包容器原點的點平移到相對它的控制項原點的點

異步控制函式

GetReadyState 返回控制項的就緒狀態
InternalSetReadyState設定控制項的就緒狀態,觸發就緒狀態改變事件
Load重新設定先前的異步數據,初始化新裝控制項異步特性

可覆蓋的函式

DisplayError 向控制項用戶顯示標準Error事件
DoPropExchange串列化COleControl對象特性
GetClassID獲取控制項的OLE類標識
GetMessageString為選單項提供狀態欄文本
IsSubclassedControl判定控制項是否為Windows控制項的子類
OnClick調用它觸發標準Click事件
OnDoVerb執行一個控制項動詞後調用該函式
OnDraw當用戶要求重畫時調用該函式
OnDrawMetaFile當控制項請求使用一個元檔案設備上下文重畫時,包容器調用該函式
OnEdit包容器調用以激活OLE控制項的用戶界面

可覆蓋的函式

OnEnumVerbs 由包容器調用以為控制項的動詞技術
OnEventAdvise當事件處理函式和控制項建立或下線時調用該函式
OnKeyDownEvent當觸發標準KeyDown事件後調用該函式
OnKeyPressEvent當觸發標準KeyPress事件後調用該函式
OnKeyUpEvent當觸發標準KeyUp事件後調用該函式
OnProperties當執行控制項的"Properties"動詞後調用該函式
OnResetState設定控制項特性為預設值

改變通知函式

OnAppearanceChanged 當標準Appearance特性改變時調用該函式
OnBackColorChanged當標準BackColor特性改變時調用該函式
OnBorderStyleChanged當標準BorderStyle特性改變時調用該函式
OnEnabledChanged當標準Enabled特性改變時調用該函式
OnFontChanged當標準Font特性改變時調用該函式
OnForeColorChanged當標準ForeColor特性改變時調用該函式
OnTextChanged當標準Text或Caption特性改變時調用該函式

OLE界面通知函式

OnAmbientPropertyChange 當環境特性改變時調用該函式
OnClose通知控制項,說明調用了IOleControl::Close
OnFreezeEvents當控制項事件凍結或解凍時調用該函式
OnGetControlInfo向包容器提供助記符信息
OnMnemonic當控制項的助記符輸入時調用該函式
OnRenderData框架調用以獲取指定格式的數據
OnRenderFileData框架調用以從檔案獲取指定格式的數據
OnRenderGlobalData框架調用以從全局記憶體獲取指定格式的數據
OnSetClientSite通知控制項,說明調用了IOleControl::SetClientSite
OnSetData將控制項的數據替換成另一個值
OnSetExtent當控制項的範圍改變時調用該函式
OnSetObjectRects當控制項的維改變時調用該函式

可覆蓋的IViewObject界面通知函式

OnGetColorSet 通知控制項,說明調用了IOleObject::GetColorSet
OnGetNaturalExtent覆蓋該函式以獲取控制項最接近計畫尺寸和擴展模式的顯示尺寸
OnGetViewExtent覆蓋該函式以獲取控制項顯示區域的尺寸
OnGetViewRect覆蓋該函式將控制項尺寸轉換為從以指定位置開始的矩形
OnGetViewStatus覆蓋該函式以獲取控制項的視圖狀態
OnQueryHitPoint覆蓋該函式以詢問控制項的顯示是否覆蓋了一個指定點
OnQueryHitRect覆蓋該函式以詢問控制項的顯示是否覆蓋了一個指定矩形內的任意點

就地激活函式

OnGetInPlaceMenu 請求將和包容器選單合併的控制項選單的句柄
OnHideToolBars當控制項UI取消時,包容器調用該函式
OnShowToolBars當控制項UI 激活時,包容器調用該函式

屬性瀏覽函式

OnGetDisplayString 調用該函式以取得代表一個特性值的字元串
OnGetPredefinedStrings返回代表一個特性的所有可能值的一組字元串
OnGetPredefinedValue返回對應一個預定義字元串的值
OnMapPropertyToPage指示用哪個特性頁編輯一個特性

相關詞條

相關搜尋

熱門詞條

聯絡我們