다음을 통해 공유


ITextRange::Move 메서드(tom.h)

삽입 지점을 지정된 단위 수만큼 앞으로 또는 뒤로 이동합니다. 범위가 비일반적인 경우 범위는 Count에 따라 양쪽 끝의 삽입 지점으로 축소된 다음 이동됩니다.

구문

HRESULT Move(
  long Unit,
  long Count,
  long *pDelta
);

매개 변수

Unit

형식: long

사용할 단위입니다. 기본값은 tomCharacter입니다. 다른 값에 대한 자세한 내용은 ITextRange의 토론을 참조하세요.

Count

형식: long

과거로 이동할 단위의 수입니다. 기본값은 1입니다. Count가 0보다 크면 동작이 앞으로( 스토리 끝쪽으로) 이동되고 Count가 0보다 작으면 동작이 뒤로 시작됩니다. Count가 0이면 범위가 변경되지 않습니다.

pDelta

형식: long*

삽입 지점이 지나간 실제 단위수입니다. 포인터는 NULL일 수 있습니다. 자세한 내용은 주의 섹션을 참조하세요.

반환 값

형식: HRESULT

메서드는 HRESULT 값을 반환합니다. 메서드가 삽입 지점을 이동하는 데 성공하면 S_OK 반환합니다. 메서드가 실패하면 다음 오류 코드 중 하나를 반환합니다. COM 오류 코드에 대한 자세한 내용은 COM에서 오류 처리를 참조하세요.

반환 코드 설명
E_NOTIMPL
단위 는 지원되지 않습니다.
S_FALSE
다른 이유로 인해 실패합니다.

설명

범위가 퇴화(삽입 지점)인 경우 이 메서드는 삽입 지점 CountUnits를 이동하려고 시도합니다.

범위가 퇴화되지 않고 Count 가 0보다 큰 경우 이 메서드는 끝 문자 위치의 범위를 축소하고 결과 삽입 지점을 단위 경계 앞으로 이동한 다음(아직 1개에 있지 않은 경우) Count - 1 Unit을 앞으로 이동하려고 시도합니다. 범위가 퇴화되지 않고 Count 가 0보다 작은 경우 이 메서드는 시작 문자 위치의 범위를 축소하고 결과 삽입 지점을 단위 경계로 뒤로 이동한 다음(아직 없는 경우) | 이동하려고 시도합니다.Count| - 1 단위뒤로. 따라서 두 경우 모두 축소 후 단위 의 시작 또는 끝으로 이동하든 관계없이 퇴화하지 않은 범위를 삽입 지점으로 축소하면 단위로 계산됩니다.

ITextRange::Move 메서드는 pDelta = 실제로 이동된 단위수를 반환합니다. 이 메서드는 삽입 지점을 이 범위의 스토리 이상으로 이동하지 않습니다. CountUnits가 삽입 지점을 스토리의 시작 부분으로 이동하면 시작 스토리로 이동되고 그에 따라 pDelta가 설정됩니다. 마찬가지로 , CountUnits가 스토리의 끝을 넘어 이동하면 스토리 끝으로 이동됩니다.

ITextRange::Move 메서드는 동작 방향이 기하학적 방향이 아니라 논리적이라는 점을 제외하고 UI 지향 MoveLeftMoveRight 메서드와 유사하게 작동합니다. 즉, ITextRange::Move 를 사용하면 방향이 끝 또는 스토리의 시작쪽으로 이동합니다. 언어에 따라 이야기의 끝으로 이동하는 것은 왼쪽 또는 오른쪽으로 이동할 수 있습니다. 개수에 대한 느낌을 얻으려면 Microsoft Word 문서에서 Ctrl+오른쪽 화살표를 눌러 다양한 항목을 선택합니다. 왼쪽에서 오른쪽 텍스트에서 이 키 입력은 , 및 와 MoveRight(tomWord, 1)동일하게 Move(tomWord, 1)동작합니다. 개수 는 Ctrl+오른쪽 화살표를 누른 횟수에 해당합니다.

예를 들어 다음 두 그림 모두에 표시된 선택 영역에 대해 Ctrl+오른쪽 화살표를 누르면 문자 위치 8에 삽입 지점이 생성됩니다. 이 명령은 최종 문자 위치(각각 7 및 8)에서 선택 영역을 축소하고 다음 tomWord 경계로 이동하기 때문에 입니다.

텍스트 문자열의 문자 위치 텍스트 문자열의 문자 위치 첫 번째 선택 영역에는 문자 위치 7의 빈 공간이 포함되지 않으므로 Ctrl+오른쪽 화살표가 공백을 지나 문자 위치 8의 tomWord 경계로 이동합니다. 끝 문자 위치는 이미 두 번째 선택 영역에 대한 tomWord 경계에 있으므로 Ctrl+오른쪽 화살표는 해당 경계에서 선택 영역을 축소합니다. 마찬가지로 Ctrl+왼쪽 화살표는 이 텍스트에 대해 와 같이 Move(tomWord, -1)MoveLeft(tomWord, 1) 작동하고 이미 tomWord 경계에 있는 문자 위치 5에서 첫 번째 선택 영역을 축소하므로 더 이상 동작이 발생하지 않습니다. 그러나 Ctrl+왼쪽 화살표는 문자 위치 4에서 두 번째 선택 영역을 축소한 다음, 동작 방향의 다음 tomWord 경계이므로 0으로 이동합니다.

반환 인수 pDelta는 퇴행되지 않은 범위를 축소하고 단위경계로 이동하기 위해 하나의 Unit 을 포함하여 삽입 지점이 이동되는 Unit 의 수와 동일하게 설정됩니다. 따라서 범위가 스토리 끝에 있는 삽입 지점일 때와 같이 동작이 없고 축소가 발생하지 않으면 pDelta 가 0으로 설정됩니다. 이 방법은 전체 스토리를 처리하는 프로그램 루프를 제어하는 데 유용합니다.

위에서 언급한 두 경우 모두에서 를 호출 Move(tomWord, 1) 하면 범위가 축소되었기 때문에 pDelta 가 1과 같습니다. 마찬가지로 호출 Move(tomWord, -1) 은 두 경우 모두 pDelta 를 -1과 동일하게 설정합니다. 단위의 일부를 단위 경계로 이동하거나 이동하지 않고 축소하면 단위가 이동된 것으로 계산됩니다.

동작 방향은 일반 텍스트 지원 저장소의 논리적 문자 순서를 나타냅니다. 이 방법은 국제 소프트웨어에서 왼쪽, 오른쪽 및 위쪽 및 아래쪽과 같은 기하학적 순서의 문제를 방지합니다. 물론 키보드에는 호출할 화살표 키가 있으므로 편집 엔진에는 이러한 기하학적 메서드가 여전히 필요합니다. 범위가 실제로 ITextSelection 개체인 경우 MoveLeftMoveRight 와 같은 메서드를 사용할 수 있습니다.

Unit이 문자(tomCharacter)를 지정하는 경우 TOM(텍스트 개체 모델)은 유니코드 문자 집합을 사용합니다. 유니코드와 멀티바이트 문자 집합 간에 변환하려면 MultiByteToWideCharWideCharToMultiByte 함수를 사용하면 가져오기 및 내보내기 시 유니코드 및 멀티바이트 문자 집합 간에 각각 쉽게 변환할 수 있습니다. 자세한 내용은 열기를 참조 하세요. 이 연결에서 CR/LF(캐리지 리턴/줄 바꿈)를 사용하여 단락을 구분하는 것은 DBCS(더블 바이트 문자 집합)만큼 문제가 됩니다. ITextSelection UI 메서드는 단일 문자인 것처럼 CR/LF를 통해 백업되지만 ITextRange::Move 메서드는 CR/LF를 두 문자로 계산합니다. 단일 문자를 단락 구분 기호로 사용하는 것이 더 낫습니다. TOM에서는 유니코드 단락 구분 기호 문자인 0x2029 허용됩니다. 일반적으로 TOM 엔진은 CR/LF, CR(캐리지 리턴), LF(줄 바꿈), 세로 탭, 양식 피드 및 0x2029 지원해야 합니다. Microsoft Rich Edit 2.0은 이전 버전과의 호환성을 위해 CR/CR/LF도 지원합니다.

시작 또는 끝 위치 개수단위의 범위를 각각 이동하는 ITextRange::MoveStart 및 ITextRange::MoveEnd 메서드도 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 tom.h
DLL Msftedit.dll

추가 정보

개념

ITextRange

MoveEnd

MoveLeft

MoveRight

MoveStart

MultiByteToWideChar

열기

기타 리소스

참조

텍스트 개체 모델

WideCharToMultiByte