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

📄 mghtmlview.cpp

📁 monqueror一个很具有参考价值的源玛
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			{				case SB_LINEUP:					if (view->m_yOffset <= 0)						break;					h = -20;					if (view->m_yOffset + h <= 0)						h = -view->m_yOffset;					view->m_yOffset += h;					SetScrollPos (view->getHwnd(), SB_VERT, view->m_yOffset);					break;				case SB_LINEDOWN:					if (view->m_yOffset + view->visibleHeight () >= view->m_clntSize.height ())						break;					h = 20;					if (view->m_yOffset + h + view->visibleHeight() >= view->m_clntSize.height() )						h = view->m_clntSize.height() - view->visibleHeight() - view->m_yOffset;					view->m_yOffset += h;					SetScrollPos( view->getHwnd(), SB_VERT, view->m_yOffset );					 break;				case SB_PAGEUP:					if( view->m_yOffset <= 0 )						break;					h = -180;					if (view->m_yOffset + h <= 0)						h = -view->m_yOffset;					view->m_yOffset += h;					SetScrollPos( view->getHwnd(), SB_VERT, view->m_yOffset );					break;				case SB_PAGEDOWN:					if( view->m_yOffset+view->visibleHeight() >= view->m_clntSize.height() )						break;					h = 180;					if (view->m_yOffset + h + view->visibleHeight() >= view->m_clntSize.height() )						h = view->m_clntSize.height() - view->visibleHeight() - view->m_yOffset;					view->m_yOffset += h;					SetScrollPos( view->getHwnd(), SB_VERT, view->m_yOffset );					break;				case SB_THUMBTRACK:					h = LOWORD (lParam) - view->m_yOffset;					if (h)				   	{						view->m_yOffset = LOWORD(lParam);						SetScrollPos( view->getHwnd(), SB_VERT, view->m_yOffset );					}					break;			}			if (h)			{				ScrollWindow (view->getHwnd(), 0, -h, NULL, NULL);				view->m_part->m_isMoved = true;			}			break;		case MSG_HSCROLL:			switch( wParam )	   		{				case SB_LINELEFT:					if( view->m_xOffset <= 0 )						break;					w = -20;					if (view->m_xOffset + w <= 0)						h = -view->m_xOffset;					view->m_xOffset += w;					SetScrollPos( view->getHwnd(), SB_HORZ, view->m_xOffset );					break;				case SB_LINERIGHT:					if (view->m_xOffset+view->visibleWidth() >= view->m_clntSize.width())						break;					w = 20;					if (view->m_xOffset + w + view->visibleWidth() >= view->m_clntSize.width() )						w = view->m_clntSize.width() - view->visibleWidth() - view->m_xOffset;					view->m_xOffset += w;					SetScrollPos( view->getHwnd(), SB_HORZ, view->m_xOffset );					break;																								case SB_PAGELEFT:					if( view->m_xOffset <= 0 )						break;					w = -180;					if (view->m_xOffset + w <= 0)						w = -view->m_xOffset;					view->m_xOffset += w;					SetScrollPos( view->getHwnd(), SB_HORZ, view->m_xOffset );					break;				case SB_PAGERIGHT:					if (view->m_xOffset+view->visibleWidth() >= view->m_clntSize.width())						break;					w = 180;					if (view->m_xOffset + w + view->visibleWidth() >= view->m_clntSize.width() )						w = view->m_clntSize.width() - view->visibleWidth() - view->m_xOffset;					view->m_xOffset += w;					SetScrollPos( view->getHwnd(), SB_HORZ, view->m_xOffset );					break;				case SB_THUMBTRACK:					w = LOWORD (lParam) - view->m_xOffset;					if (w)					{						view->m_xOffset = LOWORD(lParam);						SetScrollPos( view->getHwnd(), SB_HORZ, view->m_xOffset );					}					break;			}			if (w)			{				ScrollWindow (view->getHwnd(), -w, 0, NULL, NULL);				view->m_part->m_isMoved = true;			}			break;		case MSG_LBUTTONDOWN:			view->OnMousePressEvent (LOWORD (lParam), HIWORD (lParam), wParam);			break;		case MSG_MOUSEMOVE:			view->OnMouseMoveEvent (LOWORD (lParam), HIWORD (lParam), wParam);			break;		case MSG_LBUTTONUP:			view->OnMouseReleaseEvent(LOWORD (lParam), HIWORD (lParam), wParam);			break;		case MSG_KEYDOWN:			view->OnKeyPressEvent (LOWORD (wParam), lParam);			break;		case MSG_SETCURSOR:			return 0;		case MSG_LBUTTONDBLCLK:			break;		case MSG_COMMAND:			{				int id = LOWORD(wParam);				int code = HIWORD(wParam);				MGWidget * dw = (MGWidget *)GetWindowAdditionalData( GetDlgItem(hWnd,id) );				if ( dw )					dw -> ProcNotification( code );				break;			}		case MSG_CLOSE:			DestroyAllControls(hWnd);			return 0;		case MSG_DESTROY:			DestroyAllControls(hWnd);			break;		case MSG_TIMER:#ifdef JAVASCRIPT_ENABLE			TimerEvaluateJavaScript(&(view->m_JSContext),&(view->m_JSObject),view,wParam);#endif			return 0;		case MSG_OPENURL:			if(view->part()->parentPart() == NULL && wParam == 0)			{				SetAddressForBar((char *)(view->m_windowurl.url().latin1()));				int length = strlen((char *)(view->m_windowurl.url().latin1()));				char * tempchar = (char *)malloc(length + 1);				memcpy(tempchar, (char *)(view->m_windowurl.url().latin1()), length);				tempchar[length] = '\0';				addresslist.append(tempchar);			}										if(!view->m_windowurl.isValid())			{				view->openURLFromBuffer("<html> <head></head> <body> <H1>Warning: <H1> Invalid URL !!!</body> </html>");				break;			}			if(view->m_windowurl.isLocalFile())			{				view->filename = view->m_windowurl.path(); 				view->openURL();			}			else			{				//RemoveWndJob(hWnd);				temp = (JobElement *)malloc(sizeof( JobElement));				temp->hWndFrom = hWnd;				temp->strURL = (unsigned char *)malloc(MAX_PATH);				sprintf((char *)temp->strURL, (const char *)(view->m_windowurl.url().latin1()));												temp->strBuffer = NULL;				temp->strLibBuffer = NULL;				temp->strMethod = (unsigned char *)"get";				temp->next = NULL;				temp->nType = 0;				temp->strLength=0;				AddJobToQueue(temp);			}						break;		case MSG_URLREADY:			temp = (JobElement *)lParam;			if(temp->nType)				view->LoadedMsgFromNet(temp->strURL,temp->strBuffer,temp->strLength,temp->nType);			else{				view->openURLFromBuffer((char *)temp->strBuffer);			}			RemoveJob(temp);			break;						case MSG_SUBMITURL:			temp = (JobElement *)malloc(sizeof( JobElement));			temp->hWndFrom = hWnd;			temp->strURL = (unsigned char *)malloc(strlen((char*)wParam)+1);			strcpy((char *)(temp->strURL), (const char*)wParam);			temp->strBuffer = NULL;			temp->strLibBuffer = NULL;			if(!lParam)				temp->strMethod=(unsigned char *)"get";			else				temp->strMethod=(unsigned char *)"post";			temp->next = NULL;			temp->nType = 0;			temp->strLength=0;			AddJobToQueue(temp);			break;		case MSG_REQUESTCACHEURL:			temp = (JobElement *)malloc(sizeof( JobElement));			temp->hWndFrom = hWnd;			temp->strURL = (unsigned char *)malloc(strlen((char*)wParam)+1);			sprintf((char *)(temp->strURL), (const char*)wParam);			temp->strBuffer = NULL;			temp->strLibBuffer = NULL;			temp->strMethod = (unsigned char *)"get";			temp->next = NULL;			temp->nType = (int)lParam;			temp->strLength=0;#if DEBUG_BY_XHTANG	fprintf(stderr,"MSG_REQUESTCACHEURL u:%s\n",temp->strURL);#endif				AddJobToQueue(temp);			break;		case MSG_IMAGELAYOUT:			view->layout();			InvalidateRect(hWnd,0,0);			break;#ifdef JAVASCRIPT_ENABLE		case MSG_SCRIPTDATAPROCESSED:			view->ScriptDataProcessed();			break;#endif	}	return DefaultControlProc( hWnd, message, wParam, lParam );}void ShowChild( khtml::RenderObject *parent, bool show ){	if(parent == NULL)		return;	khtml::RenderObject *child = parent->firstChild();	while( child )	{		if( child->isWidget() )		{			khtml::RenderWidget *widget = static_cast<khtml::RenderWidget*>(child);			if( !widget->isFrame() )			{				if( show )				{					if( widget->m_widget->isVisible() )					{						widget->m_widget->show();					}				}				else				{					widget->m_widget->setVisible( false );					widget->m_widget->hide();				}			}		}		ShowChild( child, show );		child = child->nextSibling();	}}bool MGHTMLView::LoadedMsgFromNet(unsigned char *url,unsigned char *buf,int len,int nType){			return m_doc->docLoader()->LoadedMsgFromNet(url,buf,len,nType);}		void MGHTMLView::ShowChildWidget( bool show ){	if(m_doc == NULL)		return;	ShowChild( m_doc->renderer(), show );}void MGHTMLView::resizeContents( int w, int h ){	m_clntSize.setWidth( w );	m_clntSize.setHeight( h );}void MGHTMLView::updateContents( int x, int y, int w, int h ){#if 0	RECT rect, rectClient;	GetClientRect( m_hWnd, &rectClient );	rect.left   =   x >= 0 ? x : 0;	rect.top    =   y >= 0 ? y : 0;	rect.right  =   x+w-1 <= rectClient.right ? x+w-1 : rectClient.right;	rect.bottom =   y+h-1 <= rectClient.bottom ? y+h-1 : rectClient.bottom;	if( rect.left >= rect.right || rect.top >= rect.bottom )		return;#else    RECT rect;	rect.left   =   x;	rect.top    =   y;	rect.right  =   x + w;	rect.bottom =   y + h;#endif	InvalidateRect( m_hWnd, &rect, true );}void MGHTMLView::repaintContents( int x, int y, int w, int h, bool ){	updateContents( x, y, w, h );}void MGHTMLView::addChild( MGWidget *child, int x, int y ){	//child->moveWindow( x, y );}MGHTMLPart * MGHTMLView::getPart(){	return m_part;}bool MGHTMLView::openURLFromBuffer(char *buf){	if(m_part->IsNewURL(m_windowurl))	{		m_part->openURL(m_windowurl);	}	else	{	if (m_part)		{			DestroyAllControls(m_hWnd );//			DOM::HTMLDocumentImpl *doc = m_part->docImpl();//			if (doc && doc->body())//				doc->detach();		}		MGHTMLPart *temppart;		temppart = m_part->parentPart();		if(m_part != NULL)			delete m_part;		if(m_painter != NULL)			delete m_painter;		m_part = new MGHTMLPart (this);		m_painter = new MGPainter (m_part);		init();				m_part->setParentPart(temppart);				m_part->setBaseURL(m_windowurl);		m_part->setURL(m_windowurl);		m_part->m_isMoved = false;		MGString str = buf;		m_part->begin(m_windowurl, 0, 0);		m_doc = m_part->docImpl();		//m_doc->attach (this);		//m_doc->open();		m_doc->write(str);//		m_part->end();		#if 0 		m_doc->finishParsing();		m_doc->close();#else		ScriptDataProcessed();#endif			}	return true;}bool MGHTMLView::openURL(){	if(m_part->IsNewURL(m_windowurl))		m_part->openURL(m_windowurl);	else	{		if (m_part)		{			DestroyAllControls(m_hWnd );//			DOM::HTMLDocumentImpl *doc = m_part->docImpl();//			if (doc && doc->body())//				doc->detach();		}		MGHTMLPart *temppart;		temppart = m_part->parentPart();		if(m_part != NULL)			delete m_part;		if(m_painter != NULL)			delete m_painter;		m_part = new MGHTMLPart (this);		m_painter = new MGPainter (m_part);		init();		m_part->setParentPart(temppart);		FILE* fp;		const char *FileName = filename.latin1();		fp = fopen( FileName, "r" );		if( fp != NULL )		{			char buf[0x10000];			int num = fread( buf, 1, 0x10000, fp );			assert( num < 0x10000 );			buf[num] = 0;			fclose( fp );					m_part->setBaseURL(m_windowurl);			m_part->setURL(m_windowurl);			m_part->m_isMoved = false;			MGString str = buf;			m_part->begin(m_windowurl, 0, 0);			m_doc = m_part->docImpl();			//m_doc->attach (this);			//m_doc->open();			m_doc->write(str);			m_part->end();		}		else			m_doc->write( MGString( "" ) );				m_doc->close();		}	//following is added for submitForm	m_part->setParsing(0);		return true;}void MGHTMLView::setURL(char * url){	KURL myurl(url);	return setURL(myurl);}void MGHTMLView::setURL(KURL url){	url.prettyURL(0);	m_windowurl = url;}

⌨️ 快捷键说明

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