如何在不同的类中访问CWebBrowser类实例(在受保护的类中定义)? C ++

时间:2010-05-18 19:35:26

标签: c++ visual-c++

我一直在玩this webbrowser control example

我让它工作并使用ON_WM_TIMER添加了一些计时器。

现在我想将受保护的CMyBrowserView类中定义的m_Browser(CWebBrowser类实例)访问到另一个类中。 (例如代码示例中的CMyBrowserApp)并使用.Navigate和其他函数。

我该怎么做?

(我使用visual studio 6 c ++)

2 个答案:

答案 0 :(得分:0)

可能的解决方案是将函数CWebBrowser* GetBrowser() { return &m_BrowserView.m_Browser; }添加到CMyBrowserApp类。

答案 1 :(得分:0)

创建CMyBrowserView的子类,并为您想要的每个事物添加一个方法 浏览器要做。该方法应该在m_Browser上调用适当的方法。

E.g。

class CBrowserViewEx : public CMyBrowserView
{ 
  ...
     void Navigate(LPCTSTR URL, VARIANT* Flags, 
                   VARIANT* TargetFrameName, VARIANT* PostData, 
                   VARIANT* Headers)
     {
         m_Browser.Navigate(URL, Flags, TargetFrameName, PostData, Headers);
     }
  ...
}

通过这种方式,您可以从外部访问该功能,但仍限制谁可以使用浏览器控件执行操作,并且您可以根据需要添加额外的包装代码(例如参数检查)。

(编辑)另请注意,您需要更改MyBrowser.cpp中的代码以将新视图名称传递给新的CSingleDocTemplate,以便MFC自动为您创建新视图。