>  기사  >  백엔드 개발  >  신틸라 사용자 안내서(2) - 전문 검색 및 수정

신틸라 사용자 안내서(2) - 전문 검색 및 수정

黄舟
黄舟원래의
2017-01-17 10:26:252255검색

Scintilla에서는 각 문자 뒤에 문자 스타일을 나타내는 바이트가 옵니다. 문자 바이트와 스타일 바이트가 함께 문자 단위를 형성합니다. 스타일 바이트의 8비트는 문자 스타일과 문자 표시기라는 두 부분으로 나뉩니다. 텍스트의 문자 표시는 SCI_INDICATORFILLRANGE 메시지를 통해 설정할 수 있다. 기본적으로 하위 5비트는 문자 스타일이고 상위 3비트는 문자 표시기입니다. 따라서 32개의 문자 스타일이 있을 수 있습니다. 구문 오류, 더 이상 사용되지 않는 이름, 잘못된 들여쓰기 및 기타 정보를 나타내는 데 사용할 수 있는 3개의 독립 문자 표시기입니다. SCI_SETSTYLEBITS 메시지를 사용하여 문자 스타일 비트를 최대 7비트까지 설정할 수 있으며 나머지는 문자 표시기에 할당됩니다.
위치는 신틸라에서 문자의 위치나 문자 앞의 공백 지점을 나타낸다. 첫 번째 문자의 위치는 0이고 두 번째 문자의 위치는 1입니다. 문서에 nLen 문자가 포함된 경우 마지막 문자의 위치는 nLen – 1입니다. 커서는 두 문자 사이에 존재하며 첫 번째 문자(0) 앞과 마지막 문자(nLen) 뒤에 위치할 수 있습니다.
두 문자를 하나의 문자로 처리할 경우 두 문자 사이에는 커서가 존재할 수 없습니다. 이러한 상황은 일반적으로 중국어와 같은 멀티바이트 문자나 줄 종결자가 CRLF인 경우에 발생합니다. 상수 INVALID_POSITION(-1)은 잘못된 위치를 나타냅니다.
성능상의 이유로 텍스트의 모든 줄은 동일한 높이, 즉 현재 스타일에서 가장 큰 글꼴의 높이를 갖습니다.

SCI_GETTEXT, SCI_SETTEXT

1) SCI_GETTEXT(int length, char *text)
텍스트 가져오기:
(1) 텍스트가 0이면 전체 문서 길이 len + 1을 반환합니다. (2) 길이가 0이면 0을 반환합니다.
(3) 텍스트가 0이 아니고 길이가 0보다 크면 길이 – 1을 반환하고 텍스트는 위치 0부터 시작하는 길이 – 1 문자와 0 종결자로 채워집니다. . 길이가 문서 길이보다 길면 추가 위치는 널 문자 0으로 채워집니다.


unsigned int len = SendMessage(SCI_GETTEXT, 0, 0);
char *chText = new char[len];
SendMessage(SCI_GETTEXT, len, (LPARAM)chText);
…
delete [] chText;

2) SCI_SETTEXT(eb3ae17112958a950f284bf658cc0d85, const char *text)

문서 텍스트를 0으로 끝나는 상수 문자열인 text로 설정합니다. 텍스트가 0이면 FALSE(0)를 반환하고, 그렇지 않으면 TRUE(1)를 반환합니다.

SCI_SETSAVEPOINT
SCI_SETSAVEPOINT

저장 지점을 설정하면 문서 상태가 수정되지 않고 TRUE(1)를 반환합니다. SCI_SETSAVEPOINT 메시지는 SCN_SAVEPOINTREACHED 이벤트 알림을 트리거합니다. 문서 상태가 수정됨으로 변경되면 SCN_SAVEPOINTLEFT 이벤트 알림이 트리거됩니다.


SCI_GETLINE

SCI_GETLINE(int line, char *text)

지정된 줄의 텍스트를 가져오고 지정된 줄의 텍스트 길이를 반환합니다(다음 줄 포함). 터미네이터). 줄 번호 line은 0부터 시작합니다. 줄 번호가 최대 줄 번호보다 크면 0이 반환됩니다. text가 0이면 지정된 텍스트 줄의 길이가 직접 반환되고, text가 0이 아닌 경우 텍스트는 지정된 텍스트 줄로 채워지지만 종결자 0은 자동으로 설정되지 않습니다.

unsigned int len = SendMessage(SCI_GETLINE, 1, 0);
char *chText = new char[len + 1];
memset(chText, 0, len + 1);SendMessage(SCI_GETLINE, 1, (LPARAM)chText);
…delete [] chText;

SCI_REPLACESEL

SCI_REPLACESEL(eb3ae17112958a950f284bf658cc0d85, const char *text)

선택한 텍스트를 바꿉니다. text는 0으로 끝나는 상수 문자열입니다. 텍스트를 선택하지 않으면 현재 위치에 텍스트가 삽입됩니다. 교체 후 커서는 삽입된 텍스트 뒤에 있게 되며 뷰는 자동으로 스크롤되어 텍스트가 표시됩니다. 텍스트가 0이면 FALSE(0)를 반환하고, 그렇지 않으면 TRUE(1)를 반환합니다.

SCI_SETREADONLY, SCI_GETREADONLY

1) SCI_SETREADONLY(bool readOnly)

문서를 읽기 전용으로 설정하고 TRUE(1)를 반환합니다. 문서가 읽기 전용 상태일 때 문서가 수정되면 SCN_MODIFYATTEMPTRO 이벤트 알림이 트리거됩니다.
2) SCI_GETREADONLY
문서의 읽기 전용 상태를 가져오고 TRUE(1) 또는 FALSE(0)를 반환합니다.

SCI_GETTEXTRANGE

SCI_GETTEXTRANGE(eb3ae17112958a950f284bf658cc0d85, TextRange *tr)

지정된 텍스트 범위를 가져옵니다. tr이 0이면 0을 반환하고, 그렇지 않으면 텍스트 길이를 반환합니다. (0 종결자는 포함되지 않음) tr.lpstrText를 지정된 텍스트 범위와 0 종결자로 채웁니다. tr.chrg.cpMax가 -1이면 문서의 끝을 의미합니다. tr.lpstrText 문자 버퍼가 충분히 큰지 확인해야 합니다((tr.chrg.cpMax - tr.chrg.cpMin) + 1).

SCI_GETSTYLEDTEXT

SCI_GETSTYLEDTEXT(eb3ae17112958a950f284bf658cc0d85, TextRange *tr)

SCI_GETTEXTRANGE와 유사하지만, 필요한 문자 버퍼 크기는 SCI_GETTEXTRANGE입니다. 2번(2 * (tr.chrg.cpMax - tr.chrg.cpMin) + 2). 신틸라는 tr.lpstrText 끝에 두 개의 0 종결자를 자동으로 추가합니다.

SCI_ALLOCATE

SCI_ALLOCATE(int bytes, eb3ae17112958a950f284bf658cc0d85)

지정된 크기의 바이트를 수용할 수 있을 만큼 큰 버퍼를 할당하고 TRUE(1)를 반환합니다. 버퍼는 지정된 크기가 현재 버퍼 크기보다 큰 경우에만 재할당되며, 그렇지 않으면 처리가 수행되지 않습니다.

SCI_ADDTEXT

SCI_ADDTEXT(int length, const char *s)

현재 위치에 지정된 텍스트의 지정된 길이를 삽입합니다. s는 0으로 끝나는 상수 문자열입니다. , 0을 반환합니다. 텍스트를 삽입한 후 현재 위치는 삽입된 텍스트 뒤에 있지만 뷰가 자동으로 스크롤되어 표시되지는 않습니다.

SCI_ADDSTYLEDTEXT

SCI_ADDSTYLEDTEXT(int length, cell *s)

현재 위치에 스타일 텍스트를 삽입하고, 처리 방법은 SCI_ADDTEXT와 유사하며, 0을 반환한다.

SCI_APPENDTEXT

SCI_APPENDTEXT(int length, const char *s)

문서 끝에 텍스트를 삽입한다. 처리 방법은 SCI_ADDTEXT와 유사하며, 0이 반환된다. .

SCI_INSERTTEXT

SCI_INSERTTEXT(int pos, const char *text)
지정된 위치에 텍스트를 삽입한다. 처리 방법은 SCI_ADDTEXT와 유사하며 0을 반환한다. pos가 -1이면 현재 위치에 삽입한다는 뜻이다.

SCI_CLEARALL

SCI_CLEARALL
문서가 읽기 전용이 아닌 이상 문서에서 모든 문자를 삭제하고 0을 반환합니다.

SCI_CLEARDOCUMENTSTYLE

SCI_CLEARDOCUMENTSTYLE
문서의 모든 스타일 정보를 지우고 0을 반환합니다. 이는 일반적으로 문서 스타일을 변경해야 할 때 사용됩니다.

SCI_GETCHARAT

SCI_GETCHARAT(int position)
지정된 위치의 문자를 반환합니다. position이 0보다 작거나 문서 끝보다 크면 0이 반환됩니다.

SCI_GETSTYLEAT

SCI_GETSTYLEAT(int position)
지정된 위치의 스타일을 반환합니다. position이 0보다 작거나 문서 끝보다 크면 0이 반환됩니다.

SCI_SETSTYLEBITS, SCI_GETSTYLEBITS

1) SCI_SETSTYLEBITS(int 비트)
스타일 비트 너비를 바이트 단위로 설정하고 TRUE(1)를 반환합니다. 기본값은 5비트이고 최대값은 7비트로 설정할 수 있습니다. 나머지 비트는 문자 표시를 나타내는 데 사용됩니다.
2) SCI_GETSTYLEBITS
스타일 비트 너비를 바이트 단위로 반환합니다.

SCI_TARGETASUTF8 *

SCI_TARGETASUTF8(eb3ae17112958a950f284bf658cc0d85, char *s)
대상 문자열을 UTF8 인코딩 형식으로 변환하고, 인코딩된 텍스트 길이를 반환하고, 바이트를 인코딩합니다. s로 채워집니다. 이 메시지는 GTK+ 플랫폼에서만 사용할 수 있습니다.

SCI_ENCODEDFROMUTF8 *

SCI_ENCODEDFROMUTF8(const char *utf8, char *encoded)
UTF8 형식 문자열을 문서 인코딩 형식으로 변환하고 변환된 바이트 길이를 반환하고 변환된 바이트 길이를 채웁니다. 바이트를 인코딩합니다. 이 메시지는 GTK+ 플랫폼에서만 사용할 수 있습니다.

SCI_SETLENGTHFORENCODE

SCI_SETLENGTHFORENCODE(int bytes)
문서 인코딩 길이를 설정하고 0을 반환합니다.

위 내용은 Scintilla User Guide(2) 내용입니다. - 전문 검색 및 수정에 대한 자세한 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.