MFC CHTMLView로 파생된 View의 함수를 Javascript에서 호출하기

Daummap.htm을 만든다. (여기에 자바스크립트로 다음지도를 만듬)

그 HTML파일 안에 다음지도 스크립트로 geocoder.coord2detailaddr(coords, callback);로 얻어진 결과 값인

var jibunjuso = result[0].jibunAddress.name에 얻어진 값을

MFC CHTMLView에서 CString m_strLocationName ; 전역변수로 등록하는 함수들을 등록


---------------------------------------------------------------------------------------------
[CxxxxView.cpp]

BEGIN_DISPATCH_MAP(CxxxxView, CHtmlView)
    DISP_FUNCTION(CxxxxView, "UpdateLocationJS", UpdateLocationJS, VT_EMPTY, VTS_BSTR) 
...
END_DISPATCH_MAP()
...
//생성자에 아래 함수를 추가
CxxxxView::CxxxxView()
{
// TODO: 여기에 생성 코드를 추가합니다.
EnableAutomation(); 
...
}
...
//자바스크립트에서 호출할 C++함수 작성
void CxxxxView::UpdateLocationJS(LPBSTR str)
{
CString tempString2;
tempString2.Format(_T("%s"), str);
m_strLocationName = tempString2.GetString();
// MessageBox(tempString2);  
}

//아래 함수추가
HRESULT CxxxxView::OnGetExternal(LPDISPATCH *lppDispatch)  
{  
    *lppDispatch = GetIDispatch(TRUE);  
    return S_OK;  
}  

[CxxxxView.h]
class CxxxxView : public CHtmlView

{
public:
CSinkholeFinderDoc* GetDocument() const;
// void UpdateLocationJS(LPCWSTR str); // sanghyun for JS external
void UpdateLocationJS(LPBSTR str); // sanghyun for JS external
...
protected:

virtual HRESULT OnGetExternal(LPDISPATCH *lppDispatch); // 추가
...
}

[Daummap.htm]