⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myie.cpp

📁 wince42 开发的IE, 640X480, xscale平台,没有实现flash插件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
            {
//                if(pMainWnd->_fFullScreen)
                {
//                    RECT rcWorkArea;
                    // no need to change the window style here, just adjust for the new work-area.
//                    SystemParametersInfo(SPI_GETWORKAREA, 0, &rcWorkArea, 0);
//                    SetWindowPos(pMainWnd->_hWnd,NULL,  rcWorkArea.left, rcWorkArea.top, rcWorkArea.right-rcWorkArea.left, rcWorkArea.bottom-rcWorkArea.top, SWP_NOZORDER);
                }
            }
            break;
		case WM_LBUTTONUP:
			//printf("WM_LBUTTONUP,x=%d,y=%d\n",LOWORD(lParam),HIWORD(lParam));			
			{
				if( 0 == pMainWnd->m_nURLType )
					break;
				WORD xPos = LOWORD(lParam);  // horizontal position of cursor
				WORD yPos = HIWORD(lParam);  // vertical position of cursor
				short id = pMainWnd->m_draw.GetClickObjID(xPos,yPos);
				//if( m_draw.m_dt == OTHER_TOOLBAR && id == 0 )
				if( id == 0 )
					::SendMessage(pMainWnd->GetWindow(),WM_CLOSE,0,0);
				else if( id == 1 )
					pMainWnd->GetVersonInfo();
			}
			break;
        default:
            break;
        }
    }
    return DefWindowProc(hwnd, message, wParam, lParam);
}

BOOL CMainWnd::PreTranslateMessage(LPMSG pMsg)
{
    if (::TranslateAccelerator(_hWnd, _hAccelTbl, pMsg))  //first shot to the main frame
        return TRUE;

    //then to mshtml
    if (_pIPActiveObj && pMsg->message >= WM_KEYFIRST && pMsg->message <= WM_KEYLAST)
    {
        HRESULT hr = _pIPActiveObj->TranslateAccelerator(pMsg);
        return (hr != S_FALSE);
    }
    return FALSE;
}

VOID CMainWnd::ChangeFontSize(BOOL fInit)
{
        VARIANT vaSize;
        vaSize.vt = VT_I4;

	if (fInit) {
		// Setting initial value
		vaSize.vt = 0;
		HRESULT hr = _pBrowser->ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER,
									   NULL, &vaSize);
		_wZoom = vaSize.lVal;
	} else {
		vaSize.lVal = _wZoom;
		HRESULT hr = _pBrowser->ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER,
									   &vaSize, NULL);
	}
}

VOID CMainWnd::Close()
{
	SaveUrlList();
    RETAILMSG(1,(L"IESIMPLE CMainWnd::Close"));

    // Tell the shell to die off
    SendMessage(_hWndBrowser, WM_CLOSE, 0,0);


	if(_pIPActiveObj)
	{
		_pIPActiveObj->Release();
	}
    _pIPActiveObj = NULL;
	if(_pCP)
	{
		_pCP->Unadvise(_dwEventCookie);
		_pCP->Release();
	}
    _pCP = NULL;
	if(_pObject)
	{
		_pObject->Close(FALSE);
		_pObject->Release();
	}
    _pObject = NULL;
	if(_pBrowser)
	    _pBrowser->Release();
    _pBrowser = NULL;

    if(_hWndCmdband)
    {
        DestroyWindow(_hWndCmdband);
    }
    if(_hWndAddressCombo)
    {
		DestroyWindow(_hWndAddressCombo);
    }
	if( _hWndProgress )
	{
		DestroyWindow(_hWndProgress);
	}
	if(_hWndStatus)
	{
		DestroyWindow(_hWndStatus);
	}
}




HRESULT CMainWnd::FindString()
{
    LPDISPATCH pDisp = NULL;
    LPOLECOMMANDTARGET pCmdTarg = NULL;
    HRESULT sts = S_OK;
    VARIANTARG var;

#define GOERROR_S(bNotCond)  {if (!(bNotCond)) goto errorS; }

    if (!_pBrowser)
        return S_OK;
    sts = _pBrowser->get_Document(&pDisp);
    GOERROR_S(pDisp);
    sts = pDisp->QueryInterface(IID_IOleCommandTarget, (LPVOID*)&pCmdTarg);
    GOERROR_S(pCmdTarg);

    var.vt   = VT_I4;
    var.lVal = 0;
    sts = pCmdTarg->Exec(
                        NULL,
                        OLECMDID_FIND,
                        MSOCMDEXECOPT_PROMPTUSER,
                        NULL,
                        &var);

    errorS:
    if (pCmdTarg)
        pCmdTarg->Release(); // release document's command target
    if (pDisp)
        pDisp->Release();    // release document's dispatch interface
    return sts;
}




BOOL HandleBrowse(HWND hwndOwner, WCHAR *szURL);
       
extern "C" BOOL APIENTRY OpenURLDlgProc (HWND hDlg, UINT message, UINT wParam, LONG lParam)
{

    WCHAR *szURL = (WCHAR *)GetWindowLong(hDlg,DWL_USER); 
    int         nRet = 4;
    
    switch(message)
    {

        case WM_INITDIALOG:
            {
                    if(!lParam)
                    {
                         EnableWindow(GetDlgItem(hDlg, IDOK), FALSE);  
                         EnableWindow(GetDlgItem(hDlg, IDC_BROWSE), FALSE);
                    }
                    else
                    {
                            szURL = (WCHAR *)lParam;
                            SetWindowLong(hDlg, DWL_USER, (LONG)szURL);
                            SendMessage(GetDlgItem(hDlg, IDC_URL_EDIT), EM_LIMITTEXT, MAX_URL-1, 0);
                            if(szURL[0])
                            {
                            
//                                   SetDlgItemText(hDlg, IDC_URL_EDIT, szURL);???
								SetWindowText(GetDlgItem(hDlg,IDC_URL_EDIT),szURL);
                            }
                    }

            }
            return TRUE;

        case WM_COMMAND:
            switch (LOWORD(wParam))
            {	

                case IDOK:
                {
//                    GetDlgItemText(hDlg, IDC_URL_EDIT, szURL, MAX_URL-1);    ???
					GetWindowText(GetDlgItem(hDlg,IDC_URL_EDIT),szURL, MAX_URL-1);
                    BOOL bNewWnd = SendMessage(GetDlgItem(hDlg, IDC_NEWWINDOW), BM_GETCHECK, 0L, 0L);
                    nRet = (bNewWnd) ? 2 : 1; 
                }
               case IDCANCEL:
                    EndDialog(hDlg, nRet);
                    return TRUE;
                    
                    
	        case IDC_BROWSE:
                    if(HandleBrowse(hDlg, szURL))
                    {
//                        SetDlgItemText(hDlg, IDC_URL_EDIT, szURL);???
						SetWindowText(GetDlgItem(hDlg,IDC_URL_EDIT),(szURL));
                    }       
                    
                default:
                    return (TRUE);
            }
            break;

        case WM_DESTROY:
            SetWindowLong(hDlg, DWL_USER, 0);
            break;

    }
    return (FALSE);


}


extern HINSTANCE   g_hInstance;
BOOL HandleBrowse(HWND hwndOwner, WCHAR *szURL)
{

    OPENFILENAME    ofn;
    WCHAR           wchFilter[MAX_PATH];
    WCHAR           wchFile[MAX_PATH+8]; 
    int             cbLen;

 
     // Initialize ofn struct
    memset(&ofn, 0, sizeof(ofn));
    ofn.lStructSize     = sizeof(ofn);
    ofn.hwndOwner       = hwndOwner;
    ofn.Flags           = OFN_FILEMUSTEXIST |
                            OFN_PATHMUSTEXIST   |
                            OFN_OVERWRITEPROMPT |
                            OFN_HIDEREADONLY;

   cbLen = LoadString(g_hInstance, IDS_BROWSEFILTER,
                       wchFilter, MAX_PATH-2);

    if (cbLen>0)
    {
        for (; cbLen >= 0; cbLen--)
        {
            if (wchFilter[cbLen]== L'@')
            {
                wchFilter[cbLen] = 0;
            }
        }
    }
    else
    {
        return FALSE;
    }
   
    
    ofn.lpstrFilter = wchFilter;
    ofn.nFilterIndex = 1;
    wcscpy(wchFile, L"file://");
    
    ofn.lpstrFile = wchFile+wcslen(wchFile);  // prefix the string with "file://"
    ofn.nMaxFile = MAX_PATH;
    if (GetOpenFileName(&ofn))
    {
        wcsncpy(szURL, wchFile, MAX_URL-1);
        return TRUE;
    }

    return FALSE;
}

CHtmlAnalyze::CHtmlAnalyze()
{
	pDis = NULL;
}

CHtmlAnalyze::~CHtmlAnalyze()
{
	if( pDis )
	{
		pDis->Release();
		pDis = NULL;
	}
}
IHTMLDocument2* CHtmlAnalyze::GetDocument()
{
//	return m_html.GetDocument();
	if( pDis != NULL )
	{
		IHTMLDocument2* pDoc;
		pDis->QueryInterface(IID_IHTMLDocument2,(void**)&pDoc);
		return pDoc;
	}
	return NULL;
}

IHTMLElement* CHtmlAnalyze::GetElement(const char *id,const GUID iid,BOOL bImg)
{ 
	if( id == NULL ) return NULL;
	IHTMLDocument2 *doc = GetDocument(); 
	if( doc == NULL ) return NULL;
	IHTMLElement* ret = NULL; 
	IHTMLElementCollection* doc_all;
	HRESULT hr;
	if( bImg == 1 )
		hr = doc->get_images(&doc_all);      // this is like doing document.all
	else
		hr = doc->get_all(&doc_all);      // this is like doing document.all
	if( hr == S_OK )
	{ 
		VARIANT vid; 
		vid.vt=VT_BSTR;
		unsigned int len = strlen(id);
		wchar_t ws[20] ={0};	//??		
		MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,id,-1,ws,len+1);
		vid.bstrVal = ws;
		VARIANT v0;
		VariantInit(&v0);
		IDispatch* disp;
		hr = doc_all->item(vid,v0,&disp);       // this is like doing document.all["messages"]		
		if( (hr == S_OK) && (disp != NULL) )
		{ 			
			hr = disp->QueryInterface(iid,(void**)&ret);
			// it's the caller's responsibility to release it
			if( hr != S_OK )
			{ 
				//
			}
			disp->Release();
		}
		doc_all->Release();
	}
	doc->Release();
	return ret;
}
IHTMLElement* CHtmlAnalyze::GetElement1(const char *id,const GUID iid,BOOL bImg)
{
	return NULL;
}
IHTMLInputHiddenElement* CHtmlAnalyze::QueryInputHidden(const char* id)
{
	HRESULT hr;
	IHTMLElement* spElem;
	spElem = GetElement(id,IID_IHTMLInputHiddenElement);
	if( spElem == NULL )
		return NULL;	
	IHTMLInputHiddenElement* spRes;
	hr = spElem->QueryInterface(IID_IHTMLInputHiddenElement, (void **)&spRes);
	spElem->Release();
	return spRes;
}
IHTMLInputTextElement* CHtmlAnalyze::QueryInputText(const char* id)
{
	HRESULT hr;
	IHTMLElement* spElem;
	spElem = GetElement(id,IID_IHTMLInputTextElement,TRUE);
	if( spElem == NULL )
		return NULL;	
	IHTMLInputTextElement* spRes;
	hr = spElem->QueryInterface(IID_IHTMLInputTextElement,(void **)&spRes);
	spElem->Release();
	return spRes;
}
IHTMLImgElement* CHtmlAnalyze::QueryImage(const char* id)
{
	HRESULT hr;
	IHTMLElement* spElem;
	spElem = GetElement(id,IID_IHTMLImgElement,TRUE);
	if( spElem == NULL )
		return NULL;	
	IHTMLImgElement* spRes;
	hr = spElem->QueryInterface(IID_IHTMLImgElement, (void **)&spRes);
	spElem->Release();
	return spRes;
}
IHTMLTable* CHtmlAnalyze::QueryTable(const char* id)
{
	HRESULT hr;
	IHTMLElement* spElem;
	spElem = GetElement(id,IID_IHTMLTable,TRUE);
	if( spElem == NULL )
		return NULL;	
	IHTMLTable* spRes;
	hr = spElem->QueryInterface(IID_IHTMLTable,(void **)&spRes);
	spElem->Release();
	return spRes;
}
IHTMLButtonElement* CHtmlAnalyze::QueryButton(const char* id)
{
	HRESULT hr;
	IHTMLElement* spElem;
	spElem = GetElement(id,IID_IHTMLButtonElement);
	if( spElem == NULL )
		return NULL;	
	IHTMLButtonElement* spRes;
	hr = spElem->QueryInterface(IID_IHTMLButtonElement,(void **)&spRes);
	spElem->Release();
	return spRes;
}
IHTMLInputButtonElement* CHtmlAnalyze::QueryInputButton(const char* id)
{
	HRESULT hr;
	IHTMLElement* spElem;
	spElem = GetElement(id,IID_IHTMLInputButtonElement);
	if( spElem == NULL )
		return NULL;	
	IHTMLInputButtonElement* spRes;
	hr = spElem->QueryInterface(IID_IHTMLInputButtonElement,(void **)&spRes);
	spElem->Release();
	return spRes;
}
IHTMLFormElement* CHtmlAnalyze::QueryForm(const char* id)
{
	HRESULT hr;
	IHTMLElement* spElem;
	spElem = GetElement(id,IID_IHTMLFormElement);
	if( spElem == NULL )
		return NULL;	
	IHTMLFormElement* spRes;
	hr = spElem->QueryInterface(IID_IHTMLFormElement,(void **)&spRes);
	spElem->Release();
	return spRes;
}
void CHtmlAnalyze::SetDocument(IDispatch*pdis)
{
	if( pDis )
	{
		pDis->Release();
		pDis = NULL;
	}
	pDis = pdis;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -