ITfRange::SetText


对于空范围对象,该方法在区域的位置生成插入。如果新内容为空字符串,该方法将删除区域中的现有内容。


语法:

HRESULT SetText(
  [in] TfEditCookie ec,
  [in] DWORD        dwFlags,
  [in] const WCHAR  *pchText,
  [in] LONG         cch
);

参数:

[in] ec

标识从 ITfDocumentMgr::CreateContext 或 ITfEditSession::D oEditSession 获取的编辑上下文。

[in] dwFlags

指定用于更正内容的可选行为。 如果设置为 TF_ST_CORRECTION的值,则操作是对现有内容的更正,而不是创建新内容,并且保留原始文本属性。

[in] pchText

指向包含要替换区域内容的文本的缓冲区的指针。

[in] cch

包含 pchText 中的字符数。

返回值

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


Value说明
  • S_OK

该方法成功。
  • E_FAIL

发生了未指定的错误。
  • E_INVALIDARG

一个或多个参数无效。
  • TF_E_COMPOSITION_REJECTED

上下文所有者拒绝了默认组合。
  • TF_E_NOLOCK

ec 参数的值是无效的 Cookie,或者调用方没有读/写锁。
  • TF_E_RANGE_NOT_COVERED

范围不在调用方的活动组合内。

注解

当某个范围涵盖多个区域时,请分别在每个区域中调用 ITfRange::SetText 。 否则,该方法可能会失败。

默认情况下,文本服务启动和结束涵盖范围的临时合成,以确保上下文所有者始终识别编辑文本的合成。 如果合成所有者拒绝默认合成,该方法将返回TF_E_COMPOSITION_REJECTED。 仅当调用方尚未启动一个组合时,才会创建默认组合。 如果调用方具有活动组合,则调用失败。

TF_CHAR_EMBEDDED对象占位符字符可能不会传递到此方法中。 应改用 ITfRange::InsertEmbedded。

对于插入文本, ITFInsertAtSelection:InsertTextAtSelection 方法不需要分配选择范围,并避免要求范围与所选内容匹配。


原文:https://learn.microsoft.com/zh-cn/windows/win32/api/msctf/nf-msctf-itfrange-settext