天天看點

COleControlMFC控件開發方面的幫助

COleControl

CObject
 └CCmdTarget
    └CWnd
       └COleControl

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

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

無視窗控件

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

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

·無視窗控件減小了執行個體的尺寸和建立對象的時間。

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

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

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

當不能使用無視窗激活時,包容器會向控件的IOleInPlaceObjectWindowless界面(支援無視窗的IOleInPlaceObject的擴充)發送輸入消息。在适當調整滑鼠坐标後,COleControl實作這些該界面時通過控件的消息映射圖分派這些消息。可以通過增加消息映射圖的入口點,同處理普通的視窗消息一樣處理這些消息。

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

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

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

關于開發一個OLE控件架構的資訊,請參閱聯機文檔“Visual C++程式員指南”中的“ActiveX控件”和“用ActiveX ControlWizard建立程式”。關于向一個基本架構基礎上增加功能的資訊,請參閱聯機文檔“Visual C++程式員指南”中的“建立一個ActiveX控件”。關于OLE控件優化的資訊,包括無視窗和flicker-free控件,請參閱聯機文檔“Visual C++程式員指南”中的“ActiveX控件:優化”。

#include <afxctl.h>

請參閱:

COlePropertyPage, CFontHolder, CPictureHolder

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 禁止使用者修改控件的特性
ThrowError OLE控件出錯時發出信号

環境屬性函數

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 訓示用哪個特性頁編輯一個特性

繼續閱讀