반응형
JS에서 MFC함수 호출
//MyHtmlClass.h class CMyHtmlClass: public CDHtmlDialog { DECLARE_DISPATCH_MAP() VOID MfcFunc(LPCTSTR _strParam1, LPCTSTR _strParam2); } //MyHtmlClass.cpp BEGIN_DISPATCH_MAP(CEzCallManagerMainDlg, CDHtmlDialog) DISP_FUNCTION(CMyHtmlClass, "MfcFunc", MfcFunc, VT_EMPTY, VTS_BSTR VTS_BSTR) END_DISPATCH_MAP() BOOL CMyHtmlClass::OnInitDialog() { CDHtmlDialog::OnInitDialog(); EnableAutomation(); SetExternalDispatch(GetIDispatch(TRUE)); // TODO: 여기에 추가 초기화 작업을 추가합니다. return TRUE; // 포커스를 컨트롤에 설정하지 않으면 TRUE를 반환합니다. } VOID CMyHtmlClass::MfcFunc(LPCTSTR _strParam1, LPCTSTR _strParam2) { }
MFC에서 JS함수 호출
INT CMyHtmlClass::GetJsData() { INT nRet = 0; IDispatch *spDocIDispatch = NULL; m_pBrowserApp->get_Document(&spDocIDispatch); if (spDocIDispatch == NULL) { nRet = -101; return nRet; } IHTMLDocument2* pDoc2 = NULL; spDocIDispatch->QueryInterface(IID_IHTMLDocument2, (LPVOID*)&pDoc2); if( pDoc2 == NULL ) { nRet = -102; return nRet; } CComQIPtrpDoc(pDoc2); CComPtr pDisp; HRESULT hr = pDoc->get_Script(&pDisp); if( SUCCEEDED(hr) ) { CString strResult = L""; OLECHAR FAR* szFunction = L"GetJsData"; DISPID dispid; hr = pDisp->GetIDsOfNames(IID_NULL, &szFunction, 1, LOCALE_SYSTEM_DEFAULT, &dispid); if( SUCCEEDED(hr) ) { COleVariant vtResult; //static BYTE parms[] = VTS_BSTR; COleDispatchDriver dispDriver(pDisp, FALSE); dispDriver.InvokeHelper ( dispid, DISPATCH_METHOD, VT_VARIANT, (void*)&vtResult, VTS_NONE //_T("hi") ); strResult = vtResult.bstrVal; } else { nRet = -202; } } else { nRet = -201; } pDoc2->Release(); return nRet; }
반응형
'c++ > MFC' 카테고리의 다른 글
[MFC] PostMessage/SendMessage 문자열 인자 넘기기 (0) | 2019.01.28 |
---|---|
[MFC] static Thread 생성, 사용 CreateThread, SetEvent, WaitForSingleObject (0) | 2019.01.22 |
[MFC] CEdit 에디트 박스 KillFocus, 포커스 제거 (0) | 2018.12.21 |
[MFC] Edit 에디트 입력 제한하기. SetLimitText는 길이만, 바이트 단위로 제한 안되므로... (0) | 2018.12.19 |
[MFC] string to wstring/wstring to string변환/ CStringA <-> CStringW (0) | 2018.12.14 |