[疑難雜症]擴充AxWebBrowser的問題???

來源:互聯網
上載者:User

  一直喜歡M$提供的WebBrowser控制項, 但是這幾天體驗了一下VS2005 Beta2提供的WebBrowser控制項, 感覺超級不爽, 雖然以前夢寐以求的功能(比如去掉3D邊框, 控制Ctrl+N快速鍵, 自訂操作功能表)都被整合到這個控制項裡來了, 但是總感覺功能還是不夠強大, 因此想從這個控制項繼承下來加以定製, 但是瀏覽了它所提供的所有屬性, 卻找不到原來的AxWebBrowser所提供的Application屬性, 而Document成員對象的類型也成了HtmlDocument類. 這下可犯了難了, 該怎麼樣擴充啊! 經過查閱, 從寥寥無幾的幾篇文章中得知2005提供的WebBrowser是Web控制項的託管版本, 看來想通過com的方法加以擴充是沒門了(哪位兄弟知道請不吝賜教^_^)

  既然不能擴充這個託管版本的WebBrowser, 那麼就拿AxWebBrowser開刀吧! 說做就做, 拿出AxImpl, TlbImp等工具就是一個猛搞, 弄到了所需的介面定義和常量聲明, 並從AxWebBrowser控制項派生出一個新控制項WebBrowserEx, 一切順利進行, 既然要定製, 當然少不了IDocHostUIHandler介面, 實現了IDocHostUIHandler介面, F5運行, 唉, 怎麼捲軸還是3d而不是Flat的啊! 仔細一想, 原來忘了把介面實現掛上去了, 那就掛吧, 掛接代碼如下:

using System;

using System.ComponentModel;

using System.Windows.Forms;

using mshtml;

using SHDocVw;

using System.Runtime.InteropServices;

using System.Reflection;


namespace WBExtended

{

    [System.ComponentModel.ToolboxItem(true)]

    public partial class WebBrowserEx : AxWebBrowser, 

        IDocHostUIHandler,

        IOleClientSite, 

        IServiceProvider

    {

        ... 

        protected override void OnCreateControl()

        {

            IOleObject obj = this.GetOcx() as IOleObject;

            if (obj != null) 

            {

                IOleClientSite ocs = this as IOleClientSite;

                if (ocs != null) obj.SetClientSite(ocs);

            }

        }

    }

}


看到那個SetClientSite沒有, 問題出來了, 看似正常的代碼居然報了一個大大的異常:

鬱悶了許久, 始終沒有找到解決方案, 不知哪位達人知道怎麼回事, 一定要告訴小弟啊!!! 先謝謝啦

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.