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