C++中嵌入ie瀏覽器總結(1) - ie邊框 及上下文菜單
最近項目中用html 來做界面,也就折騰了一下在wxwidget中嵌入瀏覽器的若干細節工作,mfc也基本是類似的,由于wxwidget中已經做了一個封裝wxie,但是開發過程中也遇到了不少問題,在此做一下總結:
- ie邊框 及上下文菜單
普通嵌入到程序里面的瀏覽器頁面都會有一個灰色的邊框,這樣放到程序里面就很難看。目前網上流行的辦法添加css:
body{
border:0;
}
但是這個方法的缺點是,必須要把頁面頭部的dtd申明去掉。網上的錯誤提法是類似以下鏈接的: http://www.faceker.com/200801/webbrowser-no-border.html 這里面講,只要把頭部改成:

但是目前很多頁面用了比較新的css,改成這樣后,頁面就無法正常顯示了。讓網頁美工改樣式? 真是有點困難。
后來繼續查閱了資料,發現比較好的辦法,那就是重載 IDocHostUIHandler 接口,其中,實現以下部分:











其中 DOCHOSTUIFLAG_NO3DBORDER 就表示不要生成邊框,DOCHOSTUIFLAG_SCROLL_NO 表示不要生成滾動條
這樣就可以比較完美的解決邊框和滾動條的問題,不用依賴頁面的調整 。讓設計師愛用什么用什么。
另外一個就是禁用右鍵菜單,網上也有不少辦法,但是用這個接口可以很簡單的實現:




























































這里不僅可以控制右鍵菜單顯示,m_contextMenuMode = kNoContextMenu,還可以做到自定義菜單顯示,m_contextMenuMode =其他值。因為暫時還不需要自定義菜單,所以這里沒有實現。
如果用wxie,就在FrameSite類增加這個接口即可,不關注的接口直接返回S_FALSE 或E_NOTIMPL;
如果用sdk或mfc,可以 調用IOleObject 的SetClientSite 方法,設置一個繼承了IOleClientSite 和 IDocHostUIHandler 的接口。
posted on 2008-12-20 22:00 jerrychan 閱讀(4378) 評論(12) 編輯 收藏 引用 所屬分類: C++