六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

定制 WebBrowser 控件

[摘要]因為工作需要,這幾天在尋找定制 WebBrowser 控件的方法。原來已經研究過一陣子,原理大概知道,基本就是實現 IDocHostUIHandler 和 IDocHostShowUI 兩個接口,I...
因為工作需要,這幾天在尋找定制 WebBrowser 控件的方法。原來已經研究過一陣子,原理大概知道,
基本就是實現 IDocHostUIHandler 和 IDocHostShowUI 兩個接口,IE 控件會在適當的時候調用這兩個接口,
我只要按照幫助文檔的說明設置不同的值就可以了。

掛接這兩個接口接口到控件中去,有兩種方法:
一種是通過 ICustomDoc 接口定制,代碼如下:
html0.Navigate2("about:blank");
ICustomDoc o = html0.Document as ICustomDoc;
o.SetUIHandler(this as IDocHostUIHandler);
但是因為只有文檔裝入之后才可以取得Document的值,所以需要預先裝入一個空文檔,這里是about:blank。

第二種方法是完成 Active Document Host 所需要的所有接口
, IOleClientSite
, IOleInPlaceSite
, IOleDocumentSite
//, IOleWindow // IOleInPlaceSite 已經包含了該接口
, IDocHostUIHandler
, IDocHostShowUI

// IOleInPlaceSite.GetWindowContext 調用需要以下兩個接口
, IOleInPlaceFrame
//, IOleInPlaceUIWindow // IOleInPlaceFrame 已經實現了該接口

// 接口 IOleClientSite.GetContainor 需要用到
, IOleContainer

掛接這些接口到控件中的代碼如下:
IOleObject o = html0.GetOcx() as IOleObject;
o.SetClientSite(this as IOleClientSite);
一旦掛接成功之后,一般會調用如下幾個函數
IOleInPlaceSite GetWindow
IDocHostUIHandler GetHostInfo
IDocHostUIHandler GetOptionKeyPath
IDocHostUIHandler GetHostInfo
IDocHostUIHandler GetDropTarget
IDocHostUIHandler UpdateUI
IDocHostUIHandler ShowUI
IDocHostUIHandler HideUI
IDocHostUIHandler TranslateAccelerator
IDocHostUIHandler TranslateUrl
IDocHostUIHandler ShowContextMenu
IDocHostShowUI IDocHostShowUI
IOleClientSite GetContainer

另外還有一種方法,就是直接使用文檔嵌入功能,嵌入 HTMLDocument 對象,這樣可以省卻使用 WebBrowser 控件。HtmlEditor 就是用的這種方法,可惜我沒能做成。





主站蜘蛛池模板: 无遮挡在线观看 | 最新午夜 | 色综合久久久久久中文网 | 亚洲最大的成人网 | 亚洲精品中文字幕乱码影院 | 亚欧乱色束缚一区二区三区 | 日韩啪啪网 | 一级做a爰片 | 亚洲成在人线av | 日本免费不卡视频一区二区三区 | 欧美一级艳片视频免费观看 | 一本久道久久综合中文字幕 | 亚洲欧美在线视频 | 亚洲欧美啪啪 | 特级黄视频 | 亚洲综合久 | 三级黄色片在线观看 | 在线激情 | 亚洲欧美精品在线 | 伊人网综合在线观看 | 四虎影院一区二区 | 日欧毛片| 日韩欧美精品中文字幕 | 性欧美大战久久久久久久久 | 色网站在线 | 日韩黄色影院 | 日本www色视频成人免费免费 | 日日干天天射 | 三上悠亚久久国产 | 亚洲最新中文字幕 | 亚洲伦理在线观看 | 亚欧有色 | 亚洲成人免费网址 | 亚洲欧洲一二三区 | 午夜性刺激在线观看视频 | 性日韩精品 | 亚洲在成人网在线看 | 中文字幕在线看视频一区二区三区 | 性夜a爽黄爽 | 色黄网站青青草原免费 | 四虎永久影院永久影库 |