Linux操作系统下的离线浏览器介绍

http://tech.ddvip.com   2006年11月19日    社区交流

本文详细介绍Linux操作系统下的离线浏览器介绍

  1.在窗口中显示HTML页面

int CHtmlView:: showPage(const char * path) 
{ //显示path指定的文件中所包含的HTML页面 
 if(path == NULL) 
  return -1; 
 else 
 { 
  FILE * pfile; 
//打开包含页面的文件 
  if((pfile = fopen((const char*)path,“rb”)) != NULL) 
  { 
   int blocklen = 0x10000; 
   char * c = new char[blocklen+1]; 
   KURL u((const char*)path); 
//类成员函数,清除窗口内原有内容,并初始化窗口,准备显示新页面 
  begin( u.directoryURL() ); 
   while(1) 
   { 
//读出网页文件的内容 
   int len = fread(c,sizeof(char),blocklen,pfile); 
//类成员函数,将读取的内容写入KHTMLView类的缓冲区 
write(c); 
//文件读取完毕后退出循环 
if(len < blocklen) 
   break; 
   } 
//类成员函数,标示HTML页面已经全部写入缓冲区 
   end(); 
//类成员函数,分析缓冲区中的HTML代码 
   parse(); 
//类成员函数,显示HTML页面 
   show(); 
   delete [] c; 
  } 
  else return -1; 
} 
return 0; 
}

  2.响应超级链接的点击

  定义鼠标事件处理函数mousePressedHook()覆盖KHTMLView类中的同型虚拟函数。当用户用鼠标点击网页中的超级链接时,该函数将被调用。被点击的超级链接的地址会作为参数自动传入该函数。由于网页文件中的所有超级链接已做过本地镜像处理,所以,只要该链接所指向的文件已经被下载程序正确地下载到本地,那么使用showPage函数就能调入并显示此页。

bool CHtmlView:: mousePressedHook 
( const char* _url, const char *_target, 
QMouseEvent *_ev, bool _isselected ) 
{ 
KHTMLView:: mousePressedHook(_url,_target,_ev,_isselected); 
//显示被点击的页面 
showPage(_url); 
return true; 
}

  在生成Kdevelop的窗口应用程序框架的View类中定义一个ChtmlView对象,将View类作为其父窗口:

ChtmlView *m_htmlview = new ChtmlView(this,“HtmlViewer”); 
/*调用showPage函数显示path指向的网页文件*/ 
m_htmlview-> showPage(path);

  此外,我们还可以在此基础上加入更多的功能,依靠KDevelop所提供的丰富的图形用户接口类将浏览器设计得更美观易用。

责编:豆豆技术应用

正在加载评论...