-
Web < -> Dialog Host 하는 방법WhatAGreatTutorial! 2008. 3. 6. 16:22반응형
포스트가 없어 그냥 남겨 본다.
상세 http://www.codeproject.com/KB/IP/CustomBrowser.aspx
웹브라우저와 Dialog(MFC) 를 통신? 할수 있는 방법이다.
웹에서 Dialog 로 메세지 전달하는 팁html 부분
Test.html
<HTML>
<HEAD>
<TITLE>테스트</TITLE>
<script langauge="javascript">
function fnIsOurCustomBrowser()
{if(window.external.CB_IsOurCustomBrowser!=null)
return true;
else
return false;
}
bIsCustomBrowser = fnIsOurCustomBrowser();if(!bIsCustomBrowser)
{
alert('지정된 어플리케이션에서만 이페이지를 완벽히 볼수 있습니다. 님.');
}
else
{
alert('제스터에서 제작한 어플에서 커스터마이징된 브라우저군요 ~\n 정상인증되었습니다.');
}// 어플에 메세지를 전달 한다.
function fnSendToMessage(strString)
{
if(bIsCustomBrowser)
window.external.CB_ThorwMassgeFromWEB(strString);
}</script>
</HEAD>
<BODY style="font-family:arial;font-size:10pt;" bgcolor="#eeeeee">
<h2><b><u>관련 문자열을 APP로 보냄</u></b></h2>
<p>Send to Message </p>
<input type="button" value="Click To Test" onclick="fnSendToMessage('jaster.tistory.com');"><BR><BR><BR></BODY>
</HTML>당신의 MFC에 급적용 하기
함수명은 그대로 사용하심이 급적용에 용이.: public CDialog 를 implements 했다고 가정합니다.
첨부 파일의
JrWebTogether.h
JrWebTogetherDlg.h
를 제외한 나머지를 모두 프로젝트에 추가 합니다.
JrWebTogether.h
JrWebTogetherDlg.h
이소스는 당신이 만든 다이얼로그라고 가정할때
>>>>>>>>>>>>>>>>
JrWebTogether.h 에
class CJrWebTogetherApp : public CWinApp
{
public:
CJrWebTogetherApp();class CImpIDispatch* m_pDispOM;
수정.
>>>>>>>>>>>>>>>>
JrWebTogether.cpp 에
#include "afxpriv.h"
#include <afxocc.h>
#include "CustSite.h"
include ..
아래 와 같이 수정
BOOL CJrWebTogetherApp::InitInstance()
{
CCustomOccManager *pMgr = new CCustomOccManager;// 종료시 초기화나 꼭 쳐하삼.
m_pDispOM = new CImpIDispatch();
AfxEnableControlContainer(pMgr);>>>>>>>>>>>>>>>>
JrWebTogetherDlg.h 에 아래와 같이 추가CWnd html_control;
IWebBrowser2* pHtmlCtrl;
.....
public:
/// 웹에서 전달된 String
BOOL CB_ThorwMassgeFromWEB(CString str);
/// 지원되는 브라우져 인가.?
BOOL CB_IsOurCustomBrowser();
};
>>>>>>>>>>>>>>>>
JrWebTogetherDlg.cpp 에 아래 와같이 브라우져 로드 시작 추가
// TODO: Add extra initialization here
CRect rect;
GetClientRect(&rect);
rect.DeflateRect(1,1,1,1);
html_control.CreateControl(CLSID_WebBrowser, NULL, WS_VISIBLE, rect, this, AFX_IDW_PANE_FIRST);
LPUNKNOWN p_unknown = html_control.GetControlUnknown();
HRESULT result = p_unknown->QueryInterface(IID_IWebBrowser2, (void**)&pHtmlCtrl);
//pHtmlCtrl->SetWindowPos(NULL,rect.left, rect.top, rect.Width(), rect.Height(),NULL);//Get Current Path of exe
CString cszFullFileName;
GetModuleFileName ( AfxGetInstanceHandle ( ), cszFullFileName.GetBuffer( MAX_PATH ), MAX_PATH ) ;
cszFullFileName.ReleaseBuffer();
cszFullFileName = cszFullFileName.Left ( cszFullFileName.ReverseFind ( '\\' ) ) ;
COleVariant varEmpty;
// 스크립트 관련 페이지
COleVariant varURL(cszFullFileName + _T("\\Test.html"));
pHtmlCtrl->Navigate2(varURL, varEmpty,varEmpty,varEmpty,varEmpty);............
// recive Message from WEB
BOOL CJrWebTogetherDlg::CB_ThorwMassgeFromWEB(CString str)
{
/// 전달 받은 스트링으로 원하는 대로 do
AfxMessageBox(str);
return TRUE;
}
// 스크립트가 지원되는 브라우져 인가.?
BOOL CJrWebTogetherDlg::CB_IsOurCustomBrowser()
{
//return true because this is obviously our
//custom browser
return TRUE;
}
>>>>>>>>>>>>>>>
compile use to VS 2005 ....
에러시
JrWebTogether.h
JrWebTogetherDlg.h
이부분을 현재 다이얼그 해더로 교체 ..끝
반응형'WhatAGreatTutorial!' 카테고리의 다른 글
mingW에서 DLL 만들기, MSVC에서 사용하기 (0) 2008.03.19 윈도우에서 gcc 사용방법 [MinGW] (0) 2008.03.18 [펌] FFMPEG Windows Build (0) 2008.03.18 RedistributingVisualCppRunTimeLibrary (0) 2008.03.14 convert AVi to mp4 in your linux machine (0) 2008.03.12