走進IE編程 (2)嵌入Web browser

來源:互聯網
上載者:User

 作者:(yjgx007)

很多情況下, 特別是在GUI使用者介面設計中, 漂亮和易定製的HTML使用者介面是非常受歡迎的, 當然, 還有XML定製

的GUI, 這裡暫不講述.
在VS6.0時代, 我們一直用CHTMLView類作為顯示HTML頁面的類, 事實上, 這個類正是嵌入了Web browser(以後簡

稱WB)控制項, 在事件互動方面, 它提供了一些HTML頁面導航和狀態控制的可重載的事件函數, 但是沒有提供怎樣

和HTML頁面中元素進行互動的介面, HTML使用者介面也就變得不太可能了, 當然, 熟悉ATL/COM的程式員仍然可以

擺脫MFC, 開發自已的基於WB控制項的GUI介面.
從VS.NET 2005開始Microsoft MFC 7.0的類裡多了一個CDHTMLDialog, 這個類實際上仍然嵌入了WB控制項 + 普通

的對話方塊控制項, 只不過針對HTML元素事件處理方面做了更多的工作, 詳見其父類CDHtmlEventSink, 如果你有更

強的好奇心, 你可以看下面對CDHtmlEventSink的簡要解釋, 否則, 就暫時跳過去, 以後, 我們還會講到.

------------------------------------------------------------------------------------------------
CDHtmlEventSink的功能摘要:
在建立對話方塊的時候, Web browser控制項也同時被建立, 我們知道控制項是基於COM的組件, 更進一步地Microsoft

稱它為OLE對象, 也許你不知道OLE, 建議您親自動搜尋下. 按照正常人的思維, 即然控制項可以被嵌入對話方塊, 對

話框和WB控制項一定是可以通過事件一起進行互動工作的, 如果你用過MFC, 一定非常熟悉其中的訊息映射, 甚至

你可以告訴我訊息映射宏是怎樣建立的, WB控制項的事件處理基本上與此類似, 只不過從概念上並非再是訊息

(message)映射宏, 而是事件(event)宏, 你可能有點困惑了, 沒關係, 在windows控制項的事件處理是完全基於消

息的, 你可以理解為一個特定的訊息指向了一個特定的事件. 同理, 在WB控制項中, 存在一個事件接收器(sink),

它暴露(expose)給你這個事件接收器, 你就可以收到各種各樣的事件了.
下面是WB控制項的事件映射宏的一個樣本, "ButtonOK"是WB控制項中HTML頁面的某個名稱為"ButtonOK"的元素 -

<input type="button" name="ButtonOK" value="OK" />, OnOK是CMyDialog的成員函數, 負責處理"ButtonOK"

元素的點擊事件.

BEGIN_DHTML_EVENT_MAP(CMyDialog)
    DHTML_EVENT_ONCLICK(_T("ButtonOK"), OnOK)
    DHTML_EVENT_ONCLICK(_T("ButtonCancel"), OnCancel)
END_DHTML_EVENT_MAP()

------------------------------------------------------------------------------------------------

很多情況下, 我們用WB控制項用得很舒服, 甚至可以定製一些關於WB控制項在導航HTML頁面時的一些自身行為, 像導

航前的HTTP頭的修改, 因此, 把相同的操作方式應用在IE browser中, 結果是根本不執行. 這個歸咎於瀏覽器自

身的安全性問題, 在這方面我們以後將做更多探討.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.