65.9K
CodeProject 正在变化。 阅读更多。
Home

自定义 Web 浏览器 ActiveX 并更改其内置设置

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.73/5 (8投票s)

2004年9月20日

2分钟阅读

viewsIcon

133500

downloadIcon

2455

本文演示了如何更改 Web 浏览器 ActiveX 的内置设置。 在本文中,实现了两个主要任务:隐藏默认滚动条和禁用右键单击。

Sample application screen

引言

Internet Explorer 是一个功能强大的工具,用于显示各种类型的图像(JPEG/GIF 等)和网页文件(HTML、ASP 等)。 它可以作为多用途图片/文档查看器使用。 这就是我尝试使用的。 但事情并没有就此结束,这只是问题的开始。

问题

Web 浏览器 ActiveX 在显示图片/文档时存在一些问题。

  1. 即使不需要,它也会在右侧显示垂直滚动条。
  2. 它允许用户右键单击并像在 Internet Explorer 中一样选择选项。

解决方案

很难找到解决此问题的方法,因为该解决方案是隐藏的。 为了解决此问题,在此项目中添加了四个主要文件。

  1. custsite.h & custsite.cpp
  2. idispimp.h & idispimp.cpp

这些文件是访问 Web 浏览器控件的接口。 这些类可以控制 Web 浏览器的内部机制,例如滚动、右键单击等。

如何使用(链接)这些类

步骤一:打开应用程序的头文件。 例如:在我的示例项目中,它是 InternetExplorerExperimentApp.h。 在类中添加以下代码

class CImpIDispatch* m_pDispOM;

步骤二:打开应用程序的 CPP 文件。 例如:InternetExplorerExperimentApp.Cpp。 添加以下代码

  • 添加头文件
    #include <..\src\occimpl.h>
    #include "custsite.h"
  • 在函数 InitInstance() 的开头添加代码
    CCustomOccManager *pMgr = new CCustomOccManager;
    // Create an IDispatch class for extending the Dynamic HTML Object Model
    m_pDispOM = new CImpIDispatch;
    AfxEnableControlContainer(pMgr);

步骤三:打开 Custsite.cpp 并添加在应用程序的 .cpp 文件中声明的全局变量,使用 extern

extern CInternetExplorerExperimentApp theApp;

步骤四:将主项目头文件添加到这两个文件中

  1. custsite.h
  2. idispimp.h

我隐藏滚动条的方法

// * CImpIDocHostUIHandler::GetHostInfo
// *
// * Purpose: Called at initialization
// *
HRESULT FAR EXPORT 
  CCustomControlSite::XDocHostUIHandler::GetHostInfo( DOCHOSTUIINFO* pInfo )
{

    METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
    // Just Comment following lines & you'll see scroll bar.
    pInfo->dwFlags = DOCHOSTUIFLAG_NO3DBORDER;
    pInfo->dwDoubleClick = DOCHOSTUIDBLCLK_DEFAULT;
    pInfo->dwFlags|=DOCHOSTUIFLAG_SCROLL_NO;
    return S_OK;
}

就到此为止。 现在,你已经有了一个方向,如果你发现任何新的东西,也请告诉我。 期待与你分享更多精彩内容。

© . All rights reserved.