ITextStoreACP::GetACPFromPoint 方法 (textstor.h)

ITextStoreACP::GetACPFromPoint 方法将屏幕坐标中的点转换为应用程序字符位置。

语法

HRESULT GetACPFromPoint(
  [in]  TsViewCookie vcView,
  [in]  const POINT  *ptScreen,
  [in]  DWORD        dwFlags,
  [out] LONG         *pacp
);

参数

[in] vcView

指定上下文视图。

[in] ptScreen

指向 POINT 结构的指针,其中包含点的屏幕坐标。

[in] dwFlags

根据相对于字符边界框的点的屏幕坐标指定要返回的字符位置。 默认情况下,返回的字符位置是包含点的屏幕坐标的字符边界框。 如果点在字符边界框之外,该方法返回 NULLTF_E_INVALIDPOINT。 此参数的其他位标志如下所示。

位标志可以组合在一起。

含义
GXFPF_ROUND_NEAREST
如果点的屏幕坐标包含在字符边界框中,则返回的字符位置是最接近点的屏幕坐标的边界边缘。
GXFPF_NEAREST
如果点的屏幕坐标未包含在字符边界框中,则返回最近的字符位置。

[out] pacp

接收与点的屏幕坐标相对应的字符位置。

返回值

此方法可以返回其中一个值。

说明
S_OK
方法成功。
TS_E_INVALIDPOINT
ptScreen 参数不在任意字符的边界框内。
TS_E_NOLAYOUT
应用程序尚未计算文本布局。

注解

点 1 位于字符边界框中,点 2 位于字符边界框之外。 默认情况下,点 1 屏幕坐标会导致 pacp 参数为 0,或者如果 dwFlags 参数设置为 GXFPF_NEAREST 则因为点 1 屏幕坐标位于字符位置 0 的字符边界框中。 如果将第 1 点的 dwFlags 参数设置为GXFPF_ROUND_NEAREST,则 pacp 参数为 1,因为点 1 屏幕坐标最接近范围位置 1。 范围位置 1 是字符位置 1 的起始范围位置。

对于点 2 屏幕坐标,此方法默认返回 TF_E_INVALIDPOINT ,或者如果 dwFlags 参数设置为 GXFPF_NEAREST ,则该方法返回 ,因为点 2 屏幕坐标位于字符边界框之外。 如果 dwFlags 参数设置为 GXFPF_ROUND_NEAREST,则点 2 屏幕坐标会导致 pacp 参数为 1,因为距离点 2 屏幕坐标最近的字符位置是字符位置 1。

第 1 点

  • Default-- pacp = 0 --屏幕坐标点位于字符位置 0 的字符边界框内。
  • -- GXFPF_ROUND_NEARESTpacp = 1 --点的屏幕坐标最接近范围位置 1,这是字符位置 1 的起始范围位置。
  • GXFPF_NEAREST -- pacp = 0 --发生默认行为是因为点位于字符位置 0 的字符边界框中。
第 2 点
  • Default-- hr = TF_E_INVALIDPOINT --点的屏幕坐标位于字符边界框外。
  • GXFPF_ROUND_NEAREST-- hr = TF_E_INVALIDPOINT --发生默认行为是因为点的屏幕坐标在字符边界框之外。
  • GXFPF_NEAREST - pacp = 1 --最接近点屏幕坐标的字符位置是字符位置 1。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 textstor.h
DLL Msctf.dll
可再发行组件 Windows 2000 专业版上的 TSF 1.0

另请参阅

GXFPF_* 常量

ITextStoreACP

ITfContextOwner::GetACPFromPoint

ITfContextView::GetRangeFromPoint

管理器返回值

TsViewCookie