Mozilla ActiveX Control
Adam Lock
<locka@iol.ie>

Topics of Discussion
An overview of ActiveX
A description of the Internet Explorer control
The Mozilla control
Feature comparison
The future

What Is an ActiveX Control?
Extends the functionality of the host application
Usually running in-process (I.e. contained in a DLL)
Usually a visible component embedded into a dialog/window of a host application
Controlled through an automation interface
Language independent
Uses a binary type library
Does not require header files or libraries
Works in many development environments, e.g. Visual Basic, Visual C++, Delphi, Internet Explorer

Internet Explorer 4 & 5
Ships as an application and control written around a layout engine
Control and application support via automation interface
Create customized applications around rendering engine
AOL
Encyclopedia Britannica
Intuit Quicken
Qualcomm Eudora
Create HTML authoring tools using control for preview mode
Frontpage 2000/Express
Coldfusion Studio
Topstyle

IE Object Model

Goal
Create an ActiveX control for Mozilla using the “Gecko” layout engine
Implement the control using the same API as the IE control
Implement as much functionality of the IE control as possible
Produce tools and samples that demonstrate how to use the control

Applications
Customized browsers
Skins
Kiosks
Report engines
Encyclopedias, dictionaries
Etc
Specialized HTML/CSS/XML development tools
Side by side comparison between IE and Mozilla

Implementation

DOM Implementation

An Application’s View

The Control’s View

Also…

Using the Control in MFC 1

Using the Control in MFC 2

Using the Control in MFC 3

CBrowse Application

Using the Control in VB 1

Using the Control in VB 2

Using the Control in VB 3

Patching Software

What This All Means
Smaller distributable
Approx 3-6Mb compared to 40+Mb
Less download time
Faster installation
Standards compliance
XML, HTML4.0, DOM 1, CSS 1, ECMAScript, PNG
Liberal distribution license
No product registration
No compulsion to upgrade to use latest version within 6 months
Open source code
Customization
Bug fixing
Community of developers

What the Control Can’t Do
Run Internet Explorer specific HTML
IE DHTML
Embedded controls
VBScript
Extend the behaviour of the underlying Mozilla engine
Change the DOM to be like IE
Add ActiveX/VBScript support
Exact implementation

Other Goodies
The Mozilla control project has spawned some other useful code!
An ActiveX control container class
An ActiveX script host
An ActiveX IE-compatible wrapper for expat
ActiveX control hosting support in Communicator 4.x
Generic implementations for standard COM interfaces IOleCommandTarget, IPropertyBag and IDropTarget

Resources
My site
http://www.iol.ie/~locka/mozilla/mozilla.htm
Mozilla.org
http://www.mozilla.org
news:netscape.public.mozilla.embedding
Microsoft!
http://msdn.microsoft.com/workshop/browser/WebBrowser/WebBrowser.asp

Future Plans
Implement a simple DHTML editor mode
Implement ActiveX control support