給瀏覽器愛好者的回信

  最近收到很多關於詢問瀏覽器開發的郵件,基本上分紅兩類問題,要麼詢問藍蜂瀏覽器的框構的,要麼就是詢問IE相關接口的。全部來信我都抽空回覆了,這個週末又收到一個關於瀏覽器開發的郵件,我乾脆就在這裏分開解釋一下,以求能幫助到更多的人。郵件內容如下:
  我是那個********的(因爲可能會猜到身份,未經發郵件者贊成,幫本人先省略),想問您些問題,也不知道您有沒空,大體是這樣的,
1:你那個瀏覽器是基於什麼作的?MDI仍是DIALOG?每一個瀏覽頁面是一個視圖仍是一個動態生成的含有iwebbrowser的對話框?
2:那個控制各個瀏覽器頁面的標籤是額外作的一些窗口嗎?仍是怎樣?
3:那個輸網址的相似於combobox的地方時徹底模擬寫了個類的仍是基於combobox繼承來的?
4:可否簡單的說下chtmlview和iwebbrowser的差距嗎?
5:可否說下其餘一些瀏覽器都是採用什麼作的,mdi仍是dialog?我用spy++看了半天,再結合一些功能效果,感受至少有些瀏覽器是MDI作的,有些感受起來時基於作的。。。。對話框下若是實現瀏覽器對於使用chtmlview是否有很大限制?
 
一口氣問了狠多問題,很很差意思啊,實在是看了不少瀏覽器後越看越迷茫,對於這個瀏覽器的架構是暈乎暈乎的,因此硬着頭皮來打擾您。
也有點緣由是,我分析了GreenBrowser的源代碼,他是基於MDI的,我以前關於MDI作界面很不熟悉,而我又想作的是GDI自定義的界面的,因此比較費勁。才搞的很暈,手忙攪亂的。先謝過,打擾了哈,要是忙的話就挑幾個簡單的說下也行,呵呵
 
   藍蜂瀏覽器不是MDI,也不是SDI,更不是使用Dialog,而是本身結合這三者的優勢而「創造」出來的一種框架,主窗口是直接基於CWnd的(也能夠理解成Dialog,由於行爲上是一致的),每個標籤對應於一個應用(或網站),而這個應用是SDI的形式的,你從打開的頁面上點擊連接所彈出的新窗口與原窗口都在一個標籤內,也都共享一個文檔對象。但從整個系統看,又是MDI框架的,由於每個標籤是對應一個文檔對象,而文檔的類型也有可能不一樣。若是你在地址欄中輸入一個.cpp文件名,你會發現變成了一個編輯器,目前已支持不少種應用,但基於某些緣由,暫沒有公開除了瀏覽器以外的功能。
   你問的「那個控制各個瀏覽器頁面的標籤」,我不太清楚是指標籤仍是每個標籤之下的那個縮略圖控制,我都把相關的內容儘量詳細描述吧。標籤與標題區是額外作的一個窗口(你用Spy++就能夠看到),你會發現標籤是繪製出來的。每個標籤之下的那些縮略圖控制是放置在一個ToolBar中,但其中的縮略圖也是繪製出來的。本人使用一些商業控件庫,但通過了本人的深度修改(商業控件庫在控制方面沒有這麼靈活)。
   那個輸網址的相似於combobox的地方是之前是繼承於CCombobox的,但也正好是這個週末,本人進行了修改,如今繼承於RichEdit20W,而地址欄右邊的那個小控制是本身貼的圖片,鼠標的消息響應須要本身處理。在如今的版本中,地址欄移到了標題的中間,這是由於不少人反映地址欄放在左上角感受過小太擠了,因而本人蔘考Pivot把地址欄移到了中間。固然對於通常的框架而言,在標題欄上建立一個Edit是比較困難的,這個之後方便的話再詳細討論了。
   關於chtmlview和iwebbrowser的差距,其實你能夠理解成chtmlview是iwebbrowser的一個包裝,chtmlview只是爲了讓普通開發者更容易更方便地使用iwebbrowser,爲了得到更強的靈活性,你能夠直接使用iwebbrowser,但我仍是建議你使用chtmlview,由於簡單,並且若是你須要更強的靈活性,你也能夠深度使用,這不過是一個包裝而已,你徹底能夠更深刻地使用它。
   瀏覽器是採用什麼框架,這個我還真的沒有怎麼研究過,不過憑使用上的感受,正象你所說,很象是MDI的。事實上,是MDI仍是SDI並不重要,這些都只是爲了更方便使用而抽象出來的一種模型,說白了也只是窗口和一些數據而已,沒必要侷限於此,具體怎麼用這徹底得看你本身的設計了。
   不知道這樣的回答是否可讓你知道你所須要知道的,若是還有問題能夠繼續溝通。
相關文章
相關標籤/搜索