WEB开发网
开发学院软件开发VC 浏览器的定制与扩展 阅读

浏览器的定制与扩展

 2006-07-22 22:56:33 来源:WEB开发网   
核心提示: 定制鼠标右键弹出出菜单要定制浏览器的鼠标右键弹出菜单,必须在自定义的控制站点类中实现IDocHostUIHandler2接口,浏览器的定制与扩展(2),并且IE的 版本是5.5或以上,在接口IDocHostUIHandler2的ShowContextMenu方法中调用浏览器类的OnShow

定制鼠标右键弹出出菜单

要定制浏览器的鼠标右键弹出菜单,必须在自定义的控制站点类中实现IDocHostUIHandler2接口,并且IE的 版本是5.5或以上。在接口IDocHostUIHandler2的ShowContextMenu方法中调用浏览器类的OnShowContextMenu虚函数,我们 在浏览器类的派生类重载此虚函数即可实现右键菜单的定制,参见代码

HRESULT CDocHostSite::XDocHostUIHandler::ShowContextMenu(DWORD dwID,
                             POINT * ppt,
                             IUnknown * pcmdtReserved,
                             IDispatch * pdispReserved)
{
  METHOD_PROLOGUE(CDocHostSite, DocHostUIHandler);
  return pThis->m_pView->OnShowContextMenu( dwID, ppt, pcmdtReserved,pdispReserved );
}
HRESULT CLhpHtmlView::OnShowContextMenu(DWORD dwID,
                    LPPOINT ppt,
                    LPUNKNOWN pcmdtReserved,
                    LPDISPATCH pdispReserved)
{
  HRESULT result = S_FALSE;
  switch(m_ContextMenuMode)
  {
  case NoContextMenu:      // 无菜单
    result=S_OK;
    break;
  case DefaultMenu:        // 默认菜单
    break;
  case TextSelectionOnly:      // 仅文本选择菜单
    if(!(dwID == CONTEXT_MENU_TEXTSELECT || dwID == CONTEXT_MENU_CONTROL))
      result=S_OK;
    break;
  case CustomMenu:        // 自定义菜单
    if(dwID!=CONTEXT_MENU_TEXTSELECT)
      result=OnShowCustomContextMenu(ppt,pcmdtReserved,pdispReserved);
    break;
  }
  return result;
}    
在CLhpHtmlView中定义的枚举类型CONTEXT_MENU_MODE举出了定制右键弹出菜单的四种类型

上一页  1 2 3 4 5 6 7  下一页

Tags:浏览器 定制 扩展

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