对于空范围对象,该方法在区域的位置生成插入。如果新内容为空字符串,该方法将删除区域中的现有内容。
语法:
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 | 说明 |
---|---|
| 该方法成功。 |
| 发生了未指定的错误。 |
| 一个或多个参数无效。 |
| 上下文所有者拒绝了默认组合。 |
| ec 参数的值是无效的 Cookie,或者调用方没有读/写锁。 |
| 范围不在调用方的活动组合内。 |
当某个范围涵盖多个区域时,请分别在每个区域中调用 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