ITextRange::SetChar 方法 (tom.h)
在范围的起始位置设置字符。
语法
HRESULT SetChar(
long Char
);
参数
Char
类型: long
字符在起始位置的新值。
返回值
类型: HRESULT
方法返回 HRESULT 值。 如果方法成功,则返回 S_OK。 如果方法失败,它将返回以下错误代码之一。 有关 COM 错误代码的详细信息,请参阅 COM 中的错误处理。
返回代码 | 说明 |
---|---|
|
文本受写保护。 |
|
内存不足。 |
注解
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 |
请参阅
概念性
引用