共用方式為


IOleInPlaceSiteWindowless::ScrollRect 方法 (ocidl.h)

讓對象在畫面上捲動其就地作用中影像內的區域。

語法

HRESULT ScrollRect(
  [in] INT     dx,
  [in] INT     dy,
  [in] LPCRECT pRectScroll,
  [in] LPCRECT pRectClip
);

參數

[in] dx

捲動 X 軸的數量。

[in] dy

捲動 Y 軸的數量。

[in] pRectScroll

要捲動的矩形,位於包含視窗的用戶端座標中。 NULL 值表示完整物件。

[in] pRectClip

要裁剪的矩形。 只會繪製卷動到此矩形的圖元。 捲動的圖元不是。 如果此參數為 NULL,則不會裁剪矩形。

傳回值

此方法會在成功時傳回S_OK。

備註

這個方法應該考慮到呼叫端可能透明,而且可能有不透明或透明重疊的物件。 如需此方法可使用的演算法建議,請參閱下面的實作者注意事項。

實作者的注意事項

容器可以透過各種方式實作此方法。 不過,所有要求卷動的物件可能都是透明的,或可能沒有穩固的背景。 容器也應該考慮可能有重疊的物件。

實作此方法的最簡單方式,只包含重新繪製要捲動的矩形。

這個簡單實作的新增精簡功能是當要求卷動的物件不透明、物件具有純色背景,而且沒有重疊的物件時,就會使用 ScrollDC 函式。

更複雜的實作可以使用下列程式:

  • 使用 IViewObjectEx::GetViewStatus 檢查物件是否不透明且具有穩固的背景。 如果不是,只要使矩形失效即可捲動。 新增的精簡功能是檢查卷動矩形是否完全位於部分透明物件的不透明區域中。
  • 取得視窗裝置內容。
  • 裁剪 IViewObjectEx::GetRect 傳回之任何重迭物件的不透明部分。
  • 最後,呼叫 ScrollDC 函式。
  • 重新繪製任何重迭物件的先前無效透明部分。
不論捲動和裁剪矩形為何,只會繪製對象網站矩形中包含的圖元。 卷動作業所發現的區域會在此方法傳回之前立即失效並重新繪製。

此方法所產生的所有重繪應該會在此方法傳回之前同步進行。

這個方法應該會在捲動作業期間自動隱藏插入號,如果插入號位於裁剪矩形內,則應該依卷動量移動插入號。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 ocidl.h

另請參閱

IOleInPlaceSiteWindowless

IViewObjectEx::GetRect

IViewObjectEx::GetViewStatus