README.TXT

OLE Automation Server that Implements Collections 


SUMMARY
=======

The LINES sample is an OLE Automation server application that implements
collections. LINES allows a collection on lines to be drawn on a pane using
OLE Automation. It exposes the following objects:

Application object
Properties
Application
FullName
Name
Pane (Returns the pane in the drawing window)
Parent
Visible
Methods
CreateLine (Returns a new Line object with no start point or
endpoint)
CreatePoint (Returns a new Point object initialized to (0,0))

Pane object
Properties
Lines (Returns a collection of all Line objects in the drawing)
Points (Returns a collection of all Point objects in the drawing)
MaxX (Returns the maximum visible X-coordinate value, in twips)
MaxY (Returns the maximum visible Y-coordinate value, in twips)
Methods
Clear (Removes all Lines and Points from the drawing and refreshes
the client area. It is as if the application had just
started)
Refresh (Clears the drawing and redraws each line in the collection)

Line object
Properties
Color (An RGB color)
EndPoint (A Point object indicating the endpoint for the line)
StartPoint (A Point object indicating the start point for the line)
Thickness (A thickness, in twips)

Point object
Properties
x
y

Lines collection

- Standard collection properties and methods. Objects that are added must
be of type Line.
- Objects returned are of type Line.
- Add and Remove cause redrawing of the pane.
- Adding a line causes two points to be added to the Points collection.
- Removing a line can cause one or more points to be removed from the
points collection.

Points collection

- Standard collection properties and methods. Objects returned are of type
Point.
- This collection does not allow addition and removal of members.
- The Points collection does not have duplicates. If there are two lines
in the drawing that share an endpoint (x, y), (x, y) appears in the
collection only once.

MORE INFORMATION
================

This sample implements the following features:

- Dual interfaces that allow access to automation properties and methods
through vtable binding and through IDispatch.
- Rich Error information for vtable-binding controllers. This is done by
implementing ISupportErrorInfo and using IErrorInfo.
- Two collections.
- Active object registration, using RegisterActiveObject and
RevokeActiveObject.
- Correct shutdown behavior.
- A registry file that contains Lines.Application as progID.
- Initial invisibility.


To compile:
-----------

To compile an ANSI debug version of the sample for Windows NT and Windows 95,
use the following command:

nmake

To compile a Unicode debug version of the sample for Windows NT only, use the
following command:

nmake dev=win32 HOST=NT

To compile a 16-bit debug version of the sample and if your development
environment is Win 3.x, use the following command. If your development
environment is Win95 or NT, change the HOST appropriately.

nmake dev=win16 HOST=DOS

Also modify the .REG file to use 16 bit version of the keys. For example
use LocalServer instead of LocalServer32.

To clean up between builds which use different options, use one of the
following commands:

nmake clean
nmake dev=win16 clean

See the makefile header comments for other make options.

If one of the build tools cannot find SDKUTIL.LIB, use the SAMPLES\COM\COMMON
sample to build SDKUTIL.LIB.

Visual C++ 2.x and above can use makefile as an external makefile
after making the following replacement in the makefile:

!include <$(MSTOOLS)\samples\com\include\olesampl.mak>

with

!include <win32.mak>


To run:
-------

Change LINES.REG to provide the full path of LINES.EXE and LINES.TLB.
Register lines.reg in the registration database by double-clicking it.

The VB 4.0 files vb.frm & vb.vbp in this directory will control the sample.
Load vb.vbp into VB 4.0, reference the lines type library using
VB's Tools/References menu and run. This will launch and control LINES.

Files
------

LINES.ODL Object description language that describes the objects LINES
exposes.

TLB.H Header file generated by mktyplib.exe

MAKEFILE Makefile for project.

Other files implement the LINES automation server.