프로그래밍 시작

한글 컨트롤 API를 이용한 프로그래밍을 시작해 보겠습니다. 액션기반 프로그래밍을 처음 접한다면 원하는 기능을 구현하기 위해 어떤 액션을 써야할지 막막합니다. 이때는 한글프로그램이 제공해 주는 매크로 기능을 이용합니다.

그림 5. 스크립트 매크로 기록방법

그림 5의 왼쪽 그림에서처럼 한글 프로그램을 띄우고 좌측면 툴바에서 스크립트를 클릭한 후 펼쳐진 창에서 스크립트 매크로 정의를 다시 클릭합니다. 그러면 오른쪽 그림처럼 스크립트 매크로 정의 창이 나오는데, 목록 중에서 아무거나 더블클릭을 하면 팝업창이 사라지면서 마우스 커서 우측 하단에 조그마한 카세트 테이프 아이콘이 붙어 있습니다. 이 상태가 매크로를 기록 중인 상태입니다. 우선 간단하게 문서에 ‘가나다’ 라고 쓰고 그 글자체를 Bold로 굵게 한 후 글자색을 입혀봅니다. 다 되었으면 Shift + Alt + X 키를 눌러 매크로 기록을 중지합니다. 정상적으로 중지가 되었으면 좌측 매크로 기록창에 지금까지 수행한 동작에 대한 스크립트가 자동으로 생성됩니다. 이렇게 한글 프로그램이 자동으로 생성해준 매크로를 참고로 프로그램을 작성하면 됩니다. 이제 할 일은 문서 내에서 글자를 쓰는 액션이 무엇인지 어떤 파라미터 셋을 이용하는지, 글자모양을 변경하려면 어떤 액션과 파라미터 셋을 이용하는 가를 보는 것입니다. 무엇보다 중요한 것은 액션아이디를 찾는 것입니다. 그림 6은 위 작업들을 한글 프로그램이 매크로로 기록한 스크립트를 보여주고 있습니다. 이렇게 우리는 한글 프로그램이 자동으로 생성해준 매크로 스크립트를 참고하여 글자를 입력하는 액션ID는 InsertText, 글자체를 굵게 하는 액션 ID는 CharShapeBold, 글자모양을 변경하는 액션 ID는 CharShape 인 것을 유추할 수 있습니다. 앞에서 액션은 크게 파라미터 셋(Parameter Set)이 필요한 액션과 파라미터 셋 없이 단독 실행 가능한 액션 두 가지로 구분할 수 있다고 했는데 기억 하시나요? 이 예제에서 단독 실행이 가능한 액션은 CharShapeBold 이고 나머지 둘은 파라미터 셋이 필요한 액션이 됩니다. 이 또한 아래 매크로 스크립트 내에서 확인이 가능합니다.

그림 6. 자동 생성된 매크로 스크립트

매크로 스크립트로부터 액션 ID를 추려 냈다면, 다음에 할 일은 API 문서를 보고 액션 ID와 해당 액션이 필요로 하는 파라미터 셋의 ID를 찾는 것 입니다. 준비물에 설명된 API 문서 3종 중에서  HwpCtrl API.hwp 또는 Action Table.hwp 파일에서 해당 액션 ID를 검색합니다. 액션 ID검색에는 주로 Action Table.hwp 파일을 많이 사용하게 됩니다.

그림 7. 글자입력 액션 ID 찾기 (Action Table.hwp)

글자를 입력하는 액션 ID인 InsertText를 검색하면 그림 7처럼 표에 파라미터셋 ID가 비어있는 것이 있고, 파라미터 셋 ID가 있는 액션이 있습니다. InsertText 의 경우 파라미터 셋이 있는 경우이므로 API 문서 중 마지막 문서인 ParameterSet Table.hwp 파일을 열어 InsertText를 검색합니다.

그림 8. 글자입력 파라미터 셋 상세 정보 (ParameterSet Table.hwp)

그림 8에서 InsertText 파라미터 셋은 아이템(세부 속성 값)으로 Text를 가지고 그 형은 PIT_BSTR(스트링형)입니다. 즉 삽입할 글 내용을 이 파라미터 셋 내의 아이템에 대입하는 것입니다.

지금까지 과정을 다시 요약하면, 한글의 매크로 기록 기능으로 액션 ID를 유추해 내고, API 문서에서 그 액션 ID와 파라미터 셋 ID를 찾아 어떤 속성들을 삽입할지 살펴보는 것입니다.

그러면 이제 버튼을 클릭하면 글자를 입력하는 간단한 프로그램을 만들어 보겠습니다.

그림 9. 글자입력 프로그램 소스

그림 9가 간단한 글자입력 프로그램의 소스입니다. DoTheJob 함수 내 14~18줄 까지의 구문들이 한글 컨트롤에서 공식처럼 사용하는 핵심 로직입니다. 14번 줄에서 InsertText라는 액션 ID를 가지고 글자 삽입 용 액션을 생성해 준 후 15번 줄에서 해당 액션의 세부 설정 값들인 파라미터 셋을 생성하고 생성된 액션과 연결하는 작업을 16번 줄에서 합니다. 17번 줄에서는 SetItem명령어를 통해 파라미터 셋 API 문서에서 찾았던 속성 값을 입력해 준 후 마지막으로 18번 줄에서 execute 명령으로 준비된 파라미터 셋을 가지고 액션을 실행을 하면 됩니다. 그림 10은 그림 9의 소스를 실행한 화면입니다. Do the Job 버튼을 누르면 아래 한글 컨트롤에 ‘가나다’ 라는 문자가 자동으로 입력되는 것을 확인할 수 있습니다.

그림 10. 글자입력 결과화면

여기까지 잘 따라하셨다면 이제 글자 모양을 굵게 하고 글자색도 빨간색으로 바꾸어 볼까요? 이를 위해 우선 문서에서 CharShapeBold와 CharShape 액션을 찾아야 합니다.

그림 11. 글자모양 관련 액션 찾기

글자 모양을 굵게 만드는 액션인 CharShapeBold 는 파라미터 셋이 없기에 Run 함수로 바로 실행이 가능하고, CharShape의 경우엔 함께 입력해야하는 파라미터 셋이 있기에 그림 9의 15~17번 줄의 과정을 한 번 더 거쳐야 합니다. 그림 12에는 두 가지 액션이 추가로 적용되어 코딩이 되어 있습니다. 18줄까지 ‘가나다’ 글자를 입력하는 액션이라면 20줄부터는 입력된 글자를 영역으로 선택한 후 굵은 글자체로 바꾸고 마지막으로 글자색을 빨간색으로 바꾸는 과정이 추가되어 있습니다.

그림 12. 글자모양 및 색 변경 프로그램 소스