ITextRange::SetChar 메서드(tom.h)
범위의 시작 위치에 있는 문자를 설정합니다.
구문
HRESULT SetChar(
long Char
);
매개 변수
Char
형식: long
시작 위치에 있는 문자의 새 값입니다.
반환 값
형식: HRESULT
메서드는 HRESULT 값을 반환합니다. 메서드가 성공하면 S_OK 반환합니다. 메서드가 실패하면 다음 오류 코드 중 하나를 반환합니다. COM 오류 코드에 대한 자세한 내용은 COM에서 오류 처리를 참조하세요.
반환 코드 | Description |
---|---|
|
텍스트는 쓰기로 보호됩니다. |
|
메모리가 부족합니다. |
설명
ITextRange::SetChar 를 사용하면 사용할 정확한 문자 코드를 지정할 수 있습니다. 그러나 비슷한 모양의 문자 모양을 가진 문자열 리터럴은 오해의 소지가 있을 수 있습니다.
이 메서드에서 설정한 문자는 BSTR 대신 LONG입니다. 이렇게 하면 백업 저장소에 저장되는 방식(바이트, 단어, 가변 길이 등)이 숨겨집니다.
자동 단어 줄 바꿈이 없는 시스템에서는 종종 문서에 줄 바꿈을 위해 하드 캐리지 리턴이 삽입됩니다. 다음 코드에서는 이러한 하드 캐리지 리턴을 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
이 방법을 사용하면 텍스트를 다른 너비로 래핑할 수 있습니다. 그러나 알고리즘은 완벽하지 않습니다. 공백(공백, 탭, 줄 바꿈, 캐리지 리턴 등)이 뒤에 오는 하드 캐리지 리턴을 공백으로 바꿔야 한다고 가정합니다. 또한 이 알고리즘은 캐리지 리턴 문자가 캐리지 리턴 또는 EOP(유니코드 단락 끝) 0x2029 문자와 같은 단일 문자라고 가정합니다. 또한 조합 캐리지 리턴과 줄 바꿈이 일치하지 않으므로 더 많은 코드를 작성하고 실행해야 합니다(또는 사용 FindText(^p)
). 또 다른 주의 사항은 알고리즘이 제대로 작동하지 않는 혼합 코드 및 설명서와 같은 다른 경우가 있다는 것입니다.
그러나 ITextRange::SetChar 는 삭제 후 삽입으로 수행되는 바꾸기 작업보다 더 효율적입니다. 따라서 ITextRange::SetChar 를 사용하지 않고 코드를 다시 작성하면 훨씬 느려질 수 있습니다.
문자 컬렉션이 할 수 있는 대부분의 작업을 수행할 수 있는 Char 속성은 부모 범위로 제한되는 대신 부모 스토리의 모든 문자를 참조할 수 있으며 범위 개체가 아닌 LONG이 관련되어 있기 때문에 훨씬 더 빠릅니다. 이러한 장점 때문에 TOM(텍스트 개체 모델)은 문자 컬렉션을 지원하지 않습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | tom.h |
DLL | Msftedit.dll |
추가 정보
개념
참조