WEB开发网
开发学院软件开发VC 在VC对话框中用ChtmlView控件显示HTML 阅读

在VC对话框中用ChtmlView控件显示HTML

 2009-05-22 20:05:54 来源:WEB开发网   
核心提示: 为了避免主控程序将CHtmlView对象看作是文档/视图框架,需要重载CView::OnMouseActivate()和CView::OnDestroy()函数,在VC对话框中用ChtmlView控件显示HTML(2),此外,当用户在控制中单击时,因为app:是假协议,所以需要设置pbCa

为了避免主控程序将CHtmlView对象看作是文档/视图框架,需要重载CView::OnMouseActivate()和CView::OnDestroy()函数。此外,当用户在控制中单击时,OnMouseActivate要负责响应(WM_MOUSEACTIVATE)。

int CHtmlCtrl::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT msg)
  {
  //旁路 CView 文档/框架
  return CWnd::OnMouseActivate(pDesktopWnd, nHitTest, msg);
  }
  void CHtmlCtrl::OnDestroy()
  {
  if (m_pBrowserApp)
  {
  m_pBrowserApp->Release();
  m_pBrowserApp = NULL;
  }
  CWnd::OnDestroy(); // 旁路 CView 文档/框架
  }

通常,CHtmlView是在virtual void PostNcDestroy()中释放空间,但对话框中的控制常常是作为堆栈对象实现的,所以,在PostNcDestroy()中不必在做什么。

为了播放资源中的HTML文件,需要重载导航处理器OnBeforeNavigate2(), 实现"app:" 伪协议,。传递"app:"链接到一个虚拟协议处理器。因为app:是假协议,所以需要设置pbCancel参数为"TRUE",以停止掉这个导航。

void CHtmlCtrl::OnBeforeNavigate2( LPCTSTR lpszURL,
  DWORD nFlags,
  LPCTSTR lpszTargetFrameName,
  CByteArray& baPostedData,
  LPCTSTR lpszHeaders,
  BOOL* pbCancel )
  {
  const char APP_PROTOCOL[] = "app:";
  int len = _tcslen(APP_PROTOCOL);
  if (_tcsnicmp(lpszURL, APP_PROTOCOL, len)==0)
  {
  OnAppCmd(lpszURL + len);
  *pbCancel = TRUE;
  }
  }

上一页  1 2 3 4 5  下一页

Tags:VC 对话框 中用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接