上一次說到調用函數
OpenURL
來打開網絡連接,這僅是網絡瀏覽的開始,現在再來分析它怎么樣去下載網頁數據,然后再顯示出來。
#001
?
void AutocompleteEdit::OpenURL(const std::wstring& url,
#002
????????????????????????????????
WindowOpenDisposition disposition,
#003
????????????????????????????????
PageTransition::Type transition,
#004
????????????????????????????????
const std::wstring& alternate_nav_url,
#005
????????????????????????????????
size_t selected_line,
#006
????????????????????????????????
const std::wstring& keyword) {
#007
???
if (url.empty())
#008
?????
return;
#009
?
#010
???
ScopedFreeze freeze(this, GetTextObjectModel());
#011
???
SendOpenNotification(selected_line, keyword);
#012
?
#013
???
if (disposition != NEW_BACKGROUND_TAB)
#014
?????
RevertAll();
?
// Revert the box to its unedited state
#015
???
controller_->OnAutocompleteAccept(url, disposition, transition,
#016
?????????????????????????????????????
alternate_nav_url);
#017
?
}
在這個函數里第一個參數
url
是要打開的網絡連接;第二個參數
disposition
是顯示位置,比如新添加一個
TAB
顯示,還是在原來的
TAB
顯示;第三個參數
transition
是下載的類型,比如是重新加載,還是新的連接下載;第四個參數
alternate_nav_url
是候選的連接;第五個參數是選擇那一行提示菜單;第六個參數
keyword
是關鍵字。
第
7
行判斷打開的連接是否為空,如果為空就不用打開連接了。
第
10
行鎖定輸入框。
第
11
行通知選中的關鍵字。
第
13
行,
14
行關閉當前輸入提示,直接在當前窗口顯示,清除一些狀態和內容。
第
15
行調控制實例來打開輸入的連接。
上面的代碼在
AutocompleteEdit
類里處理完成了,然后就把打開網絡連接放到別的類里來執行,這樣可以提高代碼的復用性,降低了代碼復雜程度。那么這個
controller_
是何方神圣呢?一看
AutocompleteEdit
類有
Controller
類的定義,肯定就是它了,但再仔細一看它,它只是一個接口類,所有函數都是純虛函數,真是百思不得其解時,突然想起,既然它是接口類,肯定就有其它類繼承它的,那么再通過搜索,一查看,果然找到一個繼承它的類
LocationBarView
,接著查看它的聲明,如下:
#001
?
/////////////////////////////////////////////////////////////////////////////
#002
?
//
#003
?
// LocationBarView class
#004
?
//
#005
?
//
??
The LocationBarView class is a View subclass that paints the background
#006
?
//
??
of the URL bar strip and contains its content.
#007
?
//
#008
?
/////////////////////////////////////////////////////////////////////////////
#009
?
class LocationBarView : public ChromeViews::View,
#010
?????????????????????????
public AutocompleteEdit::Controller {
#011
??
public:
可見類
LocationBarView
是繼承
ChromeViews::View
類,并且繼承
AutocompleteEdit::Controller
類。說明它是一個窗口類,并且是控制類,那么就是說所有接口的功能都是在這個類里實現的,只需要分析這個類里的內容,就知道它是怎么樣打開連接的了,下一次再來分析它。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
