日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Linux操作系統(tǒng)下的離線瀏覽器介紹( 二 )


1.在窗口中顯示HTML頁(yè)面
int CHtmlView:: showPage(const char * path);
{ //顯示path指定的文件中所包含的HTML頁(yè)面;
 if(path == NULL);
return -1
 else;
 {;
FILE * pfile
//打開包含頁(yè)面的文件;
if((pfile = fopen((const char*)path,“rb”)) != NULL);
{;
int blocklen = 0x10000
char * c = new char[blocklen 1]
KURL u((const char*)path)
//類成員函數(shù),清除窗口內(nèi)原有內(nèi)容,并初始化窗口,準(zhǔn)備顯示新頁(yè)面;
begin( u.directoryURL() )
【Linux操作系統(tǒng)下的離線瀏覽器介紹】 while(1);
{;
//讀出網(wǎng)頁(yè)文件的內(nèi)容;
int len = fread(c,sizeof(char),blocklen,pfile)
//類成員函數(shù),將讀取的內(nèi)容寫入KHTMLView類的緩沖區(qū);
write(c)
//文件讀取完畢后退出循環(huán);
if(len < blocklen);
break
};
//類成員函數(shù),標(biāo)示HTML頁(yè)面已經(jīng)全部寫入緩沖區(qū);
end()
//類成員函數(shù),分析緩沖區(qū)中的HTML代碼;
parse()
//類成員函數(shù),顯示HTML頁(yè)面;
show()
delete [] c
};
else return -1
};
return 0
}
2.響應(yīng)超級(jí)鏈接的點(diǎn)擊
定義鼠標(biāo)事件處理函數(shù)mousePressedHook()覆蓋KHTMLView類中的同型虛擬函數(shù) 。當(dāng)用戶用鼠標(biāo)點(diǎn)擊網(wǎng)頁(yè)中的超級(jí)鏈接時(shí),該函數(shù)將被調(diào)用 。被點(diǎn)擊的超級(jí)鏈接的地址會(huì)作為參數(shù)自動(dòng)傳入該函數(shù) 。由于網(wǎng)頁(yè)文件中的所有超級(jí)鏈接已做過(guò)本地鏡像處理,所以,只要該鏈接所指向的文件已經(jīng)被下載程序正確地下載到本地,那么使用showPage函數(shù)就能調(diào)入并顯示此頁(yè) 。
bool CHtmlView:: mousePressedHook;
( const char* _url, const char *_target,;
QMouseEvent *_ev, bool _isselected );
{;
KHTMLView:: mousePressedHook(_url,_target,_ev,_isselected)
//顯示被點(diǎn)擊的頁(yè)面;
showPage(_url)
return true
}
在生成Kdevelop的窗口應(yīng)用程序框架的View類中定義一個(gè)ChtmlView對(duì)象,將View類作為其父窗口:
ChtmlView *m_htmlview = new ChtmlView(this,“HtmlViewer”)
/*調(diào)用showPage函數(shù)顯示path指向的網(wǎng)頁(yè)文件*/;
m_htmlview-> showPage(path);
此外,我們還可以在此基礎(chǔ)上加入更多的功能,依靠KDevelop所提供的豐富的圖形用戶接口類將瀏覽器設(shè)計(jì)得更美觀易用 。

推薦閱讀