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() )
【Linux操作系统下的离线浏览器介绍】 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所提供的丰富的图形用户接口类将浏览器设计得更美观易用 。

推荐阅读