📄 mghtmlview.cpp
字号:
{ 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 + -