7 |
The LA Fox Developer Newsletter
|
August
1997
|
Implementation of ActiveX
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 |