창조에서 제가 가장 많이 활용해본 객체는 당연 [ㅎ메모]입니다. 제가 에디터 프로그램 제작에 관심이 많기 때문이죠^^
예전에 웹에디터 제작한 후로 얻은 지식을 간단히 써볼까 합니다. 그리고, 오늘 인터넷에서 얻은 정보도 써보고요^^
들어가기 전에 [ㅎ사용자함수] 객체에 다음과 같이 설정을 해봅시다. 그 이유는 창조에 기본 내장된 SendMessage 함수는 진리함수라서 활용하는데 많은 제약이 있기에 직접 user32.dll 에서 사용합니다.
ㅎ사용자함수 ----------------------------------------------- 연결파일 : user32.dll 실수함수: SendMessageA(실수: 핸들, 메시지코드, 인자1, 인자2); -----------------------------------------------
EM_GETFIRSTVISIBLELINE(상수값 : 206) 이것은 [ㅎ메모]에서 화면상 보이는 가장 첫줄의 번호를 알려줍니다.
예제소스) [ㅎ메모]에서 보이는 첫줄의 번호를 알려줍니다. 사용자함수0.SendMessageA(메모0.핸들, 206, 0, 0);
EM_LINEINDEX(상수값 : 187) 줄번호로부터 문자의 인덱스를 구합니다. 쉽게 말하자면, 해당 줄의 첫문자의 위치를 반환합니다. 인자1에 해당 줄번호를 넣으면 되고, -1(창조에서는 4294967295)를 넣으면 현재줄의 문자의 인덱스를 반환합니다.
주의! 창조에서는 그냥 -1이라 사용하면 안되며, 4294967295 를 넣어줍시다!
예제소스) 현재 [ㅎ메모]의 칸(Column)을 알려준다. (메모0.선택문자위치) - 사용자함수0.SendMessageA(메모0.핸들, 187, 4294967295, 0);
참고) 위의 예제소스에서 4294967295는 -1을 뜻합니다.
EM_LINELENGTH(상수값 : 193) 해당 위치의 문자수를 얻습니다. 여기서 위치란 행(Line)을 뜻하는 것이 아니라, 위치를 뜻합니다. 인자1에 -1(창조에서는 4294967295)을 넣으면 현재 줄의 문자 길이를 반환하고, 얻고자 하는 문자 위치를 넣으면 그 문자가 있는 줄의 문자길이를 얻습니다.
예제소스1) 10번째 문자 위치에 해당하는 줄의 문자길이를 얻는다. 사용자함수0.SendMessageA(메모0.핸들, 193, 10, 0);
예제소스2) 현재 위치에 해당하는 줄의 길이를 얻어온다. 사용자함수0.SendMessageA(메모0.핸들, 193, 0, 0);
EM_LINEFROMCHAR(상수값 : 201) 문자위치로 부터 해당 문자가 있는 줄번호를 얻어옵니다. 인자1에 -1(창조에서는 4294967295)을 넣으면 현재 위치한 곳의 줄번호를 얻어오고, 얻고자 하는 문자 위치를 넣으면 그 문자가 위치한 줄번호를 얻어옵니다.
예제소스) 13번째 문자가 있는 곳의 줄번호를 얻습니다. 사용자함수0.SendMessageA(메모0.핸들, 201, 13, 0);
EM_SETMARGINS(상수값 : 211) ㅎ메모에 여백(마진)을 지정합니다. 저도 이 메시지를 자세히느 모르겠지만;;; 인자1에는 오른쪽여백을 줄것인지 왼쪽여백을 줄것인지 지정하는 건데, 왼쪽여백은 1, 오른쪽여백은 2로 지정합니다만, 글쎄;; 2로 지정을 해줘도 오른쪽여백은 안생깁니다만; 그래서 1만 사용합니다;; 그리고 인자2에는 px 단위로 여백을 입력합니다.
예제소스) ㅎ메모의 왼쪽에 30px의 여백을 지정합니다. SendMessage(메모0.핸들, 211, 1, 30);
참고) 이 예제는 창조의 기본 내장명령어 SendMessage를 사용해도 상관은 없습니다.
EM_GETLINECOUNT(상수값 : 186) 이것은 창조의 ㅎ메모.내용.줄수 에 해당하는 것입니다. |
|