7

The LA Fox Developer Newsletter
August 1997
Implementation of ActiveX
Controls in Visual FoxPro
Part I
by Michael W Thomas, Rocky Mountain PUG
When you hear "ActiveX" your first thought may be “Internet”. ActiveX is a technology that reaches far beyond the Internet and into our Visual FoxPro applications. If you haven’t worked with ActiveX yet, you will in your next application. We’ll take a brief look at what ActiveX is all about and then study an example of implementing ChartFX, an ActiveX graphing tool.


An ActiveX Primer

Terms
OLE Object - An object that can be linked or embedded. OLE objects include OLE controls and insertable OLE objects such as Excel spreadsheets and Word documents. (from Visual FoxPro 3 Help)

ActiveX Control - “The new name for programmable elements formerly known as OLE controls, OCXs, or OLE custom controls. Controls previously built with the MFC Control Developer’s Kit meet the ActiveX control specification.

“An ActiveX control, like a built-in control, is an object that you place on a form to enable or enhance a user’s interaction with an application. ActiveX controls have events and can be incorporated into other controls. These controls have an OCX file name extension.” (from Visual FoxPro 5 Help)

In-Process - The command execution thread runs within the client application’s processing thread. Examples: ChartFX, TreeView Control

Out-of-Process - The command execution thread runs outside of the client application. The advantage is that the client application can continue processing while the server works independently. The disadvantage is that cross-process communication is slow. Examples: Adobe Acrobat reader, Graphics Server

MFC - Microsoft Foundation Class. ActiveX controls are created using the MFC’s. Think of them a base classes for VC++ developers.


Acti veX Controls vs. ActiveXAutomation
There are two common, yet very distinct, implementations of ActiveX. First is ActiveX Automation. This usually refers to controlling one application within another. An example might be automatically sending an e-mail message from within an application. Another may be creating and formathng a Word document from within VFP. This technology has been around
for a while and is often what was referred to as “doing OLE”.

Probably the most powerful component of ActiveX technology is the capability to create reusable software components. As VFP developers we’re familiar with the concepts of classes and objects. ActiveX components offers the same capability, but across development plafforms, including web page development. An ActiveX control, is simply a class that can be instantiated and reused. These controls can be created in VC++ or
VB5.

Flavors of ActiveX Projects
To add to the confusion, ActiveX projects come in five basic
types. In VFP, we commonly only deal with two of them
(sometimes a three), the others are just packaging.

ActiveX EXE. This is an application that exposes one or more classes. ActiveX EXE’s expose their object model to allow ActiveX automation. Examples are Word, Excel, your own VFP5 application, or Maplnfo. ActiveX EXE’s always run out-of-process with respect to the client.
An ActiveX Control is a self-contained class or set of classes compiled into an OCX. ActiveX controls can be instantiated within VB forms, VFP forms, web browsers, etc. The great advantage of using these for web develop ment is that they are small and run locally. Internet Ex plorer 3.0 has facilities built-in to automatically download, install, and register OCX’s as needed when viewing a web page. Distribution of new updates happens automatically when a new version is posted to the web page using the
OCX
An ActiveX DLL exposes one or more classes which allow creation of objects running in-process. These can be created by VFP5.

(For more information on this topic, see ActiveX and the Single
Programmer , Peter G. Aitken; Visual Developer Magazine; Apr!
May 1997; Vol 8, Nol; pp. 40-45)


16-bit vs. 32-bit Controls
ActiveX controls can be compiled as 16-bit and 32-bit controls, much as other applications can. This is a very important distinction because of incompatibilities between operating systems and development environments.

To start, let’s say that 32-bit controls cannot run in a 16-bit environment. However, there are now a few twists. VFP, being a 32-bit language, supports 32-bit (only, but I’ll come back to this). VFP3 can run in a 16-bit operating system only with the W1n32s thunk layer, but remember we already pointed out that 32-bit controls can’t run in 16-bit environments, including Win32s.


[Ed. Note: Michael W. Thomas is a commercial application developer forResource Data International, Inc. in Boulder, CO.
CIS: 103650,2175; email: mthomas@resdata.com.]
Page 7

7