我从WebBrowser
控制具有自主IDocHostUIHandler
实现以下想法来自CreateWebBrowserSiteBase
方法创建的衍生控制:为什么我实现的IDocHostUIHandler被忽略
的WebBrowser.WebBrowserSite类提供默认实现的OLE的IDocHostUIHandler接口的 。您可以提供您自己的 实现此接口或实现任何其他WebBrowser ActiveX控件接口,以便自定义控件的行为。
问题不起作用。我的代码看起来未来的方式:
[PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]
public MyBrowser(){}
protected override WebBrowserSiteBase CreateWebBrowserSiteBase()
{
var manager = new NewWebBrowserSite(this);
return manager;
}
protected class NewWebBrowserSite : WebBrowserSite,
UnsafeNativeMethods.IDocHostUIHandler
{
private MyBrowser host;
public NewWebBrowserSite(MyBrowser h)
: base(h)
{
this.host = h;
}
int UnsafeNativeMethods.IDocHostUIHandler.ShowContextMenu(int dwID, NativeMethods.POINT pt, object pcmdtReserved, object pdispReserved)
{
MyBrowser wb = (MyBrowser)this.host;
// other code
}
// rest of IDocHostUIHandler methods
}
我的问题是:
- 我一定要实现其他接口,使之工作;
- 是这样设计的,我看过一些post,它关系到一个错误在.NET Framework实现的
WebBrowser
我知道这是有可能去ICustomDoc.SetUIHandler
方式,但它不是我是谁寻找。
我有一些想法放弃与C#和做非托管代码。那是这样吗?
好点,http://msdn.microsoft.com/en-us/library/aa664593(v=vs.71).aspx – walter 2013-03-21 07:23:02