IViewObjectEx::QueryHitPoint 方法 (ocidl.h)
指出某個點是否在物件的指定層面內。
語法
HRESULT QueryHitPoint(
[in] DWORD dwAspect,
[in] LPCRECT pRectBounds,
[in] POINT ptlLoc,
[in] LONG lCloseHint,
[out] DWORD *pHitResult
);
參數
[in] dwAspect
要求的繪圖層面。
[in] pRectBounds
包含視窗之用戶端座標的物件周框。 此矩形是由容器計算並傳遞,讓物件可以有意義地解譯點擊位置。
[in] ptlLoc
包含視窗之用戶端座標中的點擊位置。
[in] lCloseHint
容器認為關閉 的 HIMETRIC 單位建議距離。 這個值是提示,而且物件可以自己的方式加以解譯。 物件也可以使用這個提示來大致推斷輸出解析度,以選擇點擊測試實作的廣泛性。
[out] pHitResult
傳回點擊相關信息的指標,表示為 HITRESULT 列舉值。
傳回值
此方法會在成功時傳回 S_OK 。 其他可能的傳回值包括下列專案。
傳回碼 | Description |
---|---|
|
這個方法不會針對要求的層面實作。 請改用 DVASPECT_CONTENT 。 |
備註
為了在非矩形物件上支援點擊偵測,容器需要可靠的方法來詢問物件是否位於其中一個繪圖層面內。 此函式是由 IViewObjectEx::QueryHitPoint 提供。
可能的傳回值包括:
- 在透明區域外部
- 小型或精簡物件可能會使用足以視為點擊 ()
- 打
您可以針對物件支援的任何繪圖層面呼叫 IViewObjectEx::QueryHitPoint。 如果要求繪圖層面不支援,則它應該會失敗。
透明物件可能會想要實作複雜的點擊偵測機制,讓使用者可以選取透明物件或其後方的對象,視物件內的點選位置而定。 例如,顯示足夠大文字的透明文本框,可讓使用者在字元之間按兩下時選取物件後置的物件,例如點陣圖。 基於這個理由, IViewObjectEx::QueryHitPoint 所傳回的資訊包含有關點擊是否在不透明或透明區域中發生的指示。
非矩形和透明點擊偵測的範例是一個透明圓形控件,其後方的物件 (下列範例中的一行) :
顯示的值為針對圓形進行點擊測試;灰色區域不是控件的一部分,但會顯示在這裡,以指出影像周圍被視為關閉的區域。 每個物件都會實作自己的關閉定義,但由容器提供的提示所協助,讓影像放大或縮小時可以調整關閉程度。
在上圖中,標示為 [點擊]、[關閉] 和 [透明] 的點全都是圓形上不同強度的點擊,但標示為透明、 (但針對線條,請關閉) 。 這說明點擊不同強度的效果。 因為圓形在行宣告關閉時回應透明,而且透明比關閉更弱,所以該行會叫用。
實作者的注意事項
至少需要支援 IViewObjectEx 的物件,才能針對 DVASPECT_CONTENT 層面實作這個方法。 對象不應該採取任何其他動作來響應這個方法,而不是傳回資訊;不應該有任何副作用。規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | ocidl.h |