// WebDlg.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù. // #include "stdafx.h" #include "ConsoleApp.h" #include "WebDlg.h" #include ".\webdlg.h" #include "Mshtml.h" // CWebDlg ´ëÈ­ »óÀÚÀÔ´Ï´Ù. LPDISPATCH glpDisp = NULL; // global LPDISPATCH, can also // be of class scope IMPLEMENT_DYNAMIC(CWebDlg, CDialog) CWebDlg::CWebDlg(CWnd* pParent /*=NULL*/) : CDialog(CWebDlg::IDD, pParent) { } CWebDlg::~CWebDlg() { } void CWebDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_EXPLORER1, m_web); } BEGIN_MESSAGE_MAP(CWebDlg, CDialog) ON_WM_CLOSE() END_MESSAGE_MAP() // CWebDlg ¸Þ½ÃÁö 󸮱âÀÔ´Ï´Ù. BEGIN_EVENTSINK_MAP(CWebDlg, CDialog) ON_EVENT(CWebDlg, IDC_EXPLORER1, 259, DocumentCompleteExplorer1, VTS_DISPATCH VTS_PVARIANT) ON_EVENT(CWebDlg, IDC_EXPLORER1, 251, NewWindow2Explorer1, VTS_PDISPATCH VTS_PBOOL) ON_EVENT(CWebDlg, IDC_EXPLORER1, 263, WindowClosingExplorer1, VTS_BOOL VTS_PBOOL) ON_EVENT(CWebDlg, IDC_EXPLORER1, 252, NavigateComplete2Explorer1, VTS_DISPATCH VTS_PVARIANT) END_EVENTSINK_MAP() void CWebDlg::DocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT* URL) { long width; long height; if (m_nType == 5) { long width = 627; long height = 675; int cx = GetSystemMetrics(SM_CXSCREEN); int cy = GetSystemMetrics(SM_CYSCREEN); m_web.MoveWindow(0, 0, width, height, TRUE); MoveWindow(cx/2 - width /2,cy /2 - height/2,width, height); return; } // if (glpDisp && glpDisp == pDisp) { // if the LPDISPATCH are same, that means // it is the final DocumentComplete. Reset glpDisp TRACE("Document is done downloading"); glpDisp = NULL; IDispatch* pDocDispatch = NULL ; pDocDispatch = m_web.get_Document(); IHTMLDocument2* pHTMLDoc = NULL; IHTMLTextContainer *pText = NULL; pDocDispatch->QueryInterface(IID_IHTMLDocument2,(void**)&pHTMLDoc); IHTMLElement* pHTEMLElement = NULL; IHTMLElement *lpParentElm; pHTMLDoc->get_body(&pHTEMLElement); pHTEMLElement->get_parentElement(&lpParentElm); BSTR bstr; lpParentElm->get_outerHTML(&bstr); CString sData; sData = bstr; int curPos= 0; CString sTemp = sData.Tokenize("$%^&",curPos); if(!sTemp.IsEmpty()) { sTemp= sData.Tokenize("$%^&",curPos); if(!sTemp.IsEmpty()) { int iPos=0; width = atol(sTemp.Tokenize(",",iPos)); height = atol(sTemp.Tokenize(",",iPos)); int cx = GetSystemMetrics(SM_CXSCREEN); int cy = GetSystemMetrics(SM_CYSCREEN); if(width != 0 && height != 0) { m_web.MoveWindow(0, 0, width, height, TRUE); MoveWindow(cx/2 - width /2,cy /2 - height/2,width, height); } } } SysFreeString (bstr); // CComQIPtr element = pHTEMLElement; // if(element) // { // element->get_clientHeight(&height); // element->get_clientWidth(&width); // int cx = GetSystemMetrics(SM_CXSCREEN); // int cy = GetSystemMetrics(SM_CYSCREEN); // m_web.MoveWindow(0, 0, width, height, TRUE); // MoveWindow(cx/2 - width /2,cy /2 - height/2,width, height); // } } } void CWebDlg::NewWindow2Explorer1(LPDISPATCH* ppDisp, BOOL* Cancel) { m_pWebDlg = new CWebDlg(); m_pWebDlg->Create(IDD_WEB_DLG,GetDesktopWindow()); m_pWebDlg->m_web.put_RegisterAsBrowser(TRUE); *ppDisp = m_pWebDlg->m_web.get_Application(); CString strTitle; GetWindowText(strTitle); m_pWebDlg->SetWindowText(strTitle); m_pWebDlg->ShowWindow(TRUE); } BOOL CWebDlg::OnInitDialog() { CDialog::OnInitDialog(); return TRUE; // return TRUE unless you set the focus to a control // ¿¹¿Ü: OCX ¼Ó¼º ÆäÀÌÁö´Â FALSE¸¦ ¹ÝÈ¯ÇØ¾ß ÇÕ´Ï´Ù. } int CWebDlg::GetPage(WEBDLG_TYPE nFlag,CString sCP,CString sUser,CString strPath) { CString strURL; CString strTitle; CString sData; CString strHeader = _T("Content-Type: application/x-www-form-urlencoded\r\n"); m_nType = nFlag; switch(nFlag) { case MAN_TRAFFIC: strURL = URL_MAN_TRAFFIC; strTitle = "ÄÁÅÙÃ÷ Åë°è"; sData.Format("p=%s!%s",sCP,sUser); break; case MAN_FOLDER: strURL = URL_MAN_FOLDER; strTitle = "±ÇÇÑ °ü¸®"; sData.Format("p=%s!%s",sCP,sUser); break; case MAN_USER: strURL = URL_MAN_USER; strTitle = "»ç¿ëÀÚ °ü¸®"; sData.Format("p=%s!%s",sCP,sUser); break; case MAN_TOP10: strURL = URL_MAN_TOP10; strTitle = "À̹ÌÁö È£½ºÆÃ Top10"; sData.Format("p=%s!%s",sCP,sUser); break; case MAN_FILE_STAT: strURL = URL_MAN_FILE_STAT; strTitle = "ÆÄÀÏ Åë°è"; sData.Format("p=%s!%s",sCP,strPath); break; case MAN_FILE_PRO: strURL = URL_MAN_FILE_PRO; strTitle = "ÆÄÀÏ ¼Ó¼º"; sData.Format("p=%s!%s",sCP,strPath); break; case MAN_NOTICE: strURL = URL_MAN_NOTICE; strTitle = "°øÁö »çÇ×"; sData.Format("p=%s!%s",sCP,sUser); break; case MAN_COUPON: strURL = URL_MAN_COUPON; strTitle = "ÄíÆùÁ¤º¸"; sData.Format("p=%s",sCP); break; case MAN_TRAFIC_STAT: strURL = URL_MAN_TRAFIC_STAT; strTitle = "Æ®·¡ÇÈ À̿볻¿ª"; sData.Format("p=%s",sCP); break; case MAN_FINDID: strURL = URL_MAN_FINDID; strTitle = "¾ÆÀ̵ð/ºñ¹Ð¹øÈ£Ã£±â"; break; case MAN_DISTINFO: strURL = URL_MAN_DISTINFO; strTitle = "¹èÆ÷ÇöȲÁ¶È¸"; sData.Format("p=%s!%s!%s",sCP,sUser,strPath); break; } SetWindowText(strTitle); VARIANT vHeader; vHeader.vt = VT_BSTR; vHeader.bstrVal = strHeader.AllocSysString(); SAFEARRAY FAR *sfPost = NULL; SAFEARRAYBOUND bound; bound.cElements = sData.GetLength(); bound.lLbound = 0; sfPost = SafeArrayCreate(VT_UI1,1,&bound); for (long lIndex = 0; lIndex < (signed)bound.cElements;lIndex++) { SafeArrayPutElement(sfPost,&lIndex, sData.GetBuffer(bound.cElements) + lIndex); } sData.ReleaseBuffer(); VARIANT vaPost; vaPost.vt = VT_ARRAY; vaPost.parray = sfPost; m_web.Navigate(strURL, 0 , NULL, &vaPost,&vHeader); // m_web.Navigate(strURL, 0 , NULL, NULL,&vHeader); SafeArrayDestroy(sfPost); SysFreeString(vHeader.bstrVal); return 0; } void CWebDlg::PostNcDestroy() { CDialog::PostNcDestroy(); delete this; } void CWebDlg::OnClose() { CDialog::OnClose(); } void CWebDlg::OnCancel() { DestroyWindow(); } void CWebDlg::WindowClosingExplorer1(BOOL IsChildWindow, BOOL* Cancel) { PostMessage(WM_CLOSE,0,0); // TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. } void CWebDlg::NavigateComplete2Explorer1(LPDISPATCH pDisp, VARIANT* URL) { // Check if glpDisp is NULL. If NULL, that means it is // the top level NavigateComplete2. Save the LPDISPATCH if (!glpDisp) glpDisp = pDisp; }