[한글API] HwpCtrl HyperlinkMode 의 사용 (HwpCtrl Event NotifyMessage 활용)

[한글API] HwpCtrl HyperlinkMode 의 사용 (HwpCtrl Event NotifyMessage 활용)

한글 OCX 컨트롤(ActiveX) 에서 열린, 한글 문서 내의 하이퍼링크들이 동작하지 않는 문제 발생.

기존에 사용하고 있던 도메인을 새로운 도메인으로 변경하여, 기존 주소가 404 NOT FOUND 오류 발생하는 문제였다.

하이퍼링크 이벤트를 자바스크립트 함수(js function)로 치환하였고, 자바스크립트 코드에서 URL을 간단히 replace하여 해결했다.

한글 컨트롤에서 하이퍼링크를 클릭하면 해당 URL을 윈도우의 기본 브라우저로 띄워주는데,

HyperlinkMode 가 0(기본값)일 경우 그러하다.

HyperlinkMode  를 1 로 변경하면 하이퍼링크 이벤트를 자바스크립트로 치환 가능하다.

1. 한글 컨트롤 하이퍼링크 모드 변경

한글 컨트롤 생성 이후 HyperlinkMode 를 1로 지정하면, 하이퍼링크 이벤트를 js function 으로 치환할 수 있다.
ex) 한글컨트롤변수명.HyperlinkMode(1);

2. 자바스크립트 함수 생성

js function 생성방법은 HTML에 다음과 같은 코드가 있으면 된다.
ex)
<SCRIPT LANGUAGE=”javascript” FOR=”한글컨트롤변수명” EVENT=”NotifyMessage(Msg, WParam, LParam)”>
    // 하이퍼링크 클릭시 실행되는 함수 정의.
    // “한글컨트롤변수명.HyperlinkMode(1);” 명령어 사용하면, 하이퍼링크 이벤트 대신 이 함수가 실행된다.

    // Msg 가 HyperLinkClicked 이면 하이퍼링크.
    // WParam 가 1이면 외부 하이퍼링크, 0이면 문서 내 이동이다.
    if (Msg == “HyperLinkClicked” && WParam == “1”) {
        var setObj = HwpCtrl.CtrlObj.GetMessageSet();
        var linkUrl = setObj.Item(“String”);

        alert(“linkUrl : ” + linkUrl);
        window.open(linkUrl);
    }
</SCRIPT>

cf. HwpCtrl Event 의 활용

한글API에 Event라고 되어 있는 사항들이, 항목 2번과 같이 기존 이벤트를 js function 으로 치환할 수 있다.

그 목록은 다음과 같다.

1. NotifyMessage

* NotifyMessage(string Msg, number WParam, number LParam)

Msg 값이 FieldClickHereClicked 인 경우에는 필드 컨트롤 클릭, HyperLinkClicked 인 경우에는 하이퍼링크 클릭이다.

2. OnMouseLButtonDown

* OnMouseLButtonDown(number x, number y)

3. OnScroll

* OnScroll (number WParam, number LParam)

참고사이트

한/글 2010 컨트롤 API 가이드

https://www.hancom.com/board/devdataView.do?board_seq=47&artcl_seq=4226&pageInfo.page=1&artcl_clss=&search_text=