APIAny_ChangeContentID
텍스트 또는 텍스트 라벨 요소의 내용을 변경합니다.
GSErrCode ACAPI_Goodies ( APIAny_ChangeContentID, const API_ContentPars* contentPars );
파라미터
- contentPars
- [in/out] 요소와 내용들의 파라미터들입니다.
리턴 값
NoError
- 함수가 성공적으로 완료되었습니다.
APIERR_BADPARS
- 입력 파라미터들이 올바르게 주어지지 않았습니다.
APIERR_REFUSEDPAR
- 전달된 요소가 텍스트 또는 텍스트 라벨이 아닙니다.
APIERR_PAROVERLAP
- 범위는 2개 이상의 단락들과 겹칩니다.
APIERR_PAROVERFLOW
- 시작 위치(from)가 내용 길이를 초과합니다.
APIERR_MEMFULL
- 메모리가 부족합니다.
다른 공통 API 오류들에 대해서는 API 오류 문서를 보십시오.
설명
이 함수는 멀티 스타일 텍스트 또는 텍스트 라벨의 내용을 변경하는 데 사용합니다. run들의 스타일들은 손실되지 않을 것입니다. 새로운 내용 조각은 원래 내용의 from 위치에 있는 문자의 스타일(font, size, faceBits...)을 집어올 것입니다. API_ContentPars의 content 멤버는 라인 끝(line end) 문자들을 포함하지 말아야 하며 범위는 단락들과 겹치지 않을 수 있습니다. 내용을 변경하는 다른 방법은 ACAPI_Element_Change 함수를 사용하는 것입니다. 이것을 이용하면 API_ElementMemo structure에 textContent와 paragraphs 핸들들을 전달하여 텍스트의 스타일도 세트할 수 있습니다. 할당한 메모리 블록들을 해제하는 것을 잊지 마십시오.
예제
텍스트 요소의 내용 변경하기:
원래 요소:
결과 요소:API_ContentPars contPars; Int32 numOfChanges = 2; GSErrCode err = NoError; err = ACAPI_OpenUndoableSession ("Change the content of a text element"); if (err != NoError) return err; contPars.head.index = index; contPars.head.typeID = API_TextID; contPars.from = reinterpret_cast<Int32 *> (BMAllocatePtr (numOfChanges * sizeof (Int32), ALLOCATE_CLEAR, 0)); contPars.range = reinterpret_cast<Int32 *> (BMAllocatePtr (numOfChanges * sizeof (Int32), ALLOCATE_CLEAR, 0)); contPars.content = BMAllocatePtr (256 * sizeof (char), ALLOCATE_CLEAR, 0); contPars.separator = reinterpret_cast<Int32 *> (BMAllocatePtr (numOfChanges * sizeof (Int32), ALLOCATE_CLEAR, 0)); if (contPars.from == NULL || contPars.range == NULL || contPars.content == NULL || contPars.separator == NULL) return APIERR_MEMFULL; contPars.from[0] = 5; // 바이트 위치 contPars.range[0] = 16; // 바이트 번호 contPars.from[1] = 28; contPars.range[1] = 13; CHCopyC ("raw was modified too", contPars.content); contPars.separator[0] = 16; // 바이트 오프셋 contPars.separator[1] = 32; err = ACAPI_Goodies (APIAny_ChangeContentID, &contPars, NULL); BMKillPtr (reinterpret_cast<GSPtr *> (&contPars.from)); BMKillPtr (reinterpret_cast<GSPtr *> (&contPars.range)); BMKillPtr (reinterpret_cast<GSPtr *> (&contPars.content)); BMKillPtr (reinterpret_cast<GSPtr *> (&contPars.separator)); ACAPI_CloseUndoableSession (); return err;
요구사항
- 버전: API 6.1 또는 이후
- 헤더: APIdefs_Goodies.h