ITextRange::SetChar 方法 (tom.h)

在范围的起始位置设置字符。

语法

HRESULT SetChar(
  long Char
);

参数

Char

类型: long

字符在起始位置的新值。

返回值

类型: HRESULT

方法返回 HRESULT 值。 如果方法成功,则返回 S_OK。 如果方法失败,它将返回以下错误代码之一。 有关 COM 错误代码的详细信息,请参阅 COM 中的错误处理

返回代码 说明
E_ACCESSDENIED
文本受写保护。
E_OUTOFMEMORY
内存不足。

注解

ITextRange::SetChar 允许指定要使用的精确字符代码。 但是,具有类似字形的字符串文本可能会产生误导。

此方法设置的字符为 LONG 而不是 BSTR。 这会隐藏它们在后备存储中的存储方式, () 字节、单词、可变长度等。

在没有自动换行的系统上,文档通常只为换行符插入硬回车符。 下面的代码演示了一种简单但不完美的方法,用于将此类硬回车返回与范围 r 关联的文章返回空白。

    Sub EnableWrap(r As ITextRange)   // Convert false hard CRs to soft
        r.SetRange 0, 0               // r is set at start of story
        While r.Move(tomParagraph)    // Go to start of next paragraph
            If r.MoveWhile(C1_WHITE, 1) = 0 Then    // Next char isn't white space
                r.Move tomCharacter, -1
                r.SetChar = Asc(" ")    // Replace CR by blank
            End If
        Wend        // Loop till no more CRs in story
    End Sub

或者,可以在 IF 循环中使用以下内容。

r.MoveStart tomCharacter, -1        // Select previous char (the CR)
r = " "        // Replace it with a blank

此方法使你能够将文本换行到其他宽度。 但是,该算法并不完美:它假定后跟空格 (空白、制表符、换行符、回车符等任何内容以外的硬回车符,) 应替换为空白。 该算法还假定回车符是单个字符,如回车符或 Unicode 段落尾 (EOP) 0x2029 字符。 而且,组合回车符和换行符不匹配,需要编写和执行更多代码 (或使用 FindText(^p)) 。 另一个警告是,在其他情况下,例如混合代码和文档,算法无法正常工作。

但是, ITextRange::SetChar 比通过删除后插入完成的替换操作更高效。 因此,在不使用 ITextRange::SetChar 的情况下重写代码可能会慢得多。

Char 属性可以执行字符集合可以执行的大多数操作,它具有两大优点:它可以引用父故事中的任何字符,而不是仅限于父范围,而且速度要快得多,因为涉及 LONG而不是范围对象。 由于这些优点,文本对象模型 (TOM) 不支持字符集合。

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 tom.h
DLL Msftedit.dll

请参阅

概念性

ITextRange

引用

文本对象模型