天天看點

使用WebBrowser控件時在網頁元素上繪制文本或其他自定義内容

    大家都見過VS.NET的WebForm設計器,當我們在設計器中放入一個伺服器控件的時候發現在該控件上會出現一個綠色的小箭頭标簽;在Office 2003中包含了一個名為InfoPath 2003的智能文檔工具,在它呈現的表單裡當一個表格元素得到焦點時就會出現一個自定義表格的操作按鈕,而用Spy++檢視它們的視窗句柄可以發現它們都是基于WebBrowser控件實作的,既然如此,我們在項目中使用WebBrowser控件時如何實作類似功能呢?

    在IE5.5及後續版本中引入了Element Behavior概念,通過Element Behavior我們可以獲得自定義網頁元素或者添加标準網頁元素(IMG、TABLE、INPUT等)行為的能力。Element Behavior最常見的實作方式是HTC檔案,HTC檔案是用腳本編寫的Element Behavior。

    除了HTC檔案,我們也可以用傳統程式語言(VC、Delphi,當然包括C#)來實作Element Behavior,這就是所謂的Binary Behavior,通過Binary Behavior我們能夠獲得更強大的定制能力,比如在網頁元素上繪制文本或其他自定義内容——一張圖檔,甚至一個可以響應點選的按鈕。

    一個Binary Behavior就是一個實作IElementBehavior接口的COM對象,如果Binary Behavior同時實作了IHTMLPainter接口,就可以在HTML元素上繪圖。

    相關的教程和接口說明都可以從MSDN上找到,在此我不再累述,請參見

    這裡提供一個C#實作的簡單示例,示範如何為網頁中的圖檔添加一個按鈕。 

    另提供一個Delphi實作相同功能的示例