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






3.73/5 (8投票s)
2004年9月20日
2分钟阅读

133500

2455
本文演示了如何更改 Web 浏览器 ActiveX 的内置设置。 在本文中,实现了两个主要任务:隐藏默认滚动条和禁用右键单击。
引言
Internet Explorer 是一个功能强大的工具,用于显示各种类型的图像(JPEG/GIF 等)和网页文件(HTML、ASP 等)。 它可以作为多用途图片/文档查看器使用。 这就是我尝试使用的。 但事情并没有就此结束,这只是问题的开始。
问题
Web 浏览器 ActiveX 在显示图片/文档时存在一些问题。
- 即使不需要,它也会在右侧显示垂直滚动条。
- 它允许用户右键单击并像在 Internet Explorer 中一样选择选项。
解决方案
很难找到解决此问题的方法,因为该解决方案是隐藏的。 为了解决此问题,在此项目中添加了四个主要文件。
- custsite.h & custsite.cpp
- 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;
步骤四:将主项目头文件添加到这两个文件中
- custsite.h
- 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; }
就到此为止。 现在,你已经有了一个方向,如果你发现任何新的东西,也请告诉我。 期待与你分享更多精彩内容。